在2.7 节基础上,这一节实现了用户的增删改查操作。
完整工程代码:
链接: https://pan.baidu.com/s/1zSGMvSQa-ihwEN5pP4vW6w 提取码: dpw8
工程目录结构如下:
1、添加/修改用户页面在webapp下新建目录user,用于存放用户相关的页面。
添加和修改使用的是同一个页面,通过url中的参数控制是否是修改操作。
后台通过是否传递了id进行判断新增还是修改。
新建:add.html,代码如下:
2、查询用户页面登录页面 欢迎进入我的网站
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。——孟子
添加用户
在user目录下新建list.jsp,代码如下:
<%@page import="java.util.ArrayList"%> <%@page import="com.my.site.UserEntity"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>3、编写后台逻辑-添加/修改我的网站 <% ArrayListall = ( ArrayList )session.getAttribute("all"); %> 用户查询
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。——孟子
<% for(UserEntity user:all) {%> 编号 用户名 密码 真实姓名 性别 注册时间 操作 <%} %> <%=user.getId() %> <%=user.getUname() %> <%=user.getPwd() %> <%= user.getRealName() %> <%= user.getSex() %> <%= user.getAdd_time() %> " rel="external nofollow" >删除 &uname=<%=user.getUname()%>&pwd=<%=user.getPwd()%>&realName=<%=user.getRealName()%>&sex=<%=user.getSex()%>" rel="external nofollow" >修改 当前时间: <%= (new java.util.Date()).toLocaleString()%>
新建:UserAdd类
package com.my.site;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/user/addUser")
public class UserAdd extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//从请求对象中获取请求参数:是从前端 usr/add.html页面的 userAddForm 表单提交过来的
String uname = new String(req.getParameter("uname").getBytes("ISO-8859-1"),"utf-8");
String pwd = new String(req.getParameter("pwd").getBytes("ISO-8859-1"),"utf-8");
String realName = new String(req.getParameter("realName").getBytes("ISO-8859-1"),"utf-8");
String sex = new String(req.getParameter("sex").getBytes("ISO-8859-1"),"utf-8");
String pwdRepeat = new String(req.getParameter("pwdRepeat").getBytes("ISO-8859-1"),"utf-8");
String id_str = req.getParameter("id");
boolean bool = false;
//如果有id,就执行更新操作,没有id则执行新增操作
if(null != id_str && !"".equals(id_str)){
int id = Integer.parseInt(req.getParameter("id"));
bool = MySqlOperator.updateUser(id,uname, pwd, realName, sex);
}else {
bool = MySqlOperator.addUser(uname, pwd, realName, sex);
}
resp.setContentType("text/html;charset=UTF-8");
if(bool){
//跳转到主页面,并携带请求体,返回体对象。
resp.sendRedirect("add.html?operation=addUser&success=true");
}else{
//校验失败则跳转到登录页面
resp.sendRedirect("add.html?operation=addUser&success=false");
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
4、编写后台逻辑-查询
新建 UserList 类
package com.my.site;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
@WebServlet("/user/list")
public class UserList extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List all = MySqlOperator.listAllUser();
HttpSession session = req.getSession();
session.setAttribute("all",all);
resp.setContentType("text/html;charset=UTF-8");
resp.sendRedirect("list.jsp");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
5、编写后台逻辑-删除
新建UserDel
package com.my.site;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/user/del")
public class UserDel extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//从请求对象中获取请求参数:是从前端 usr/add.html页面的 userAddForm 表单提交过来的
int id = Integer.parseInt(req.getParameter("id").trim());
MySqlOperator.delUser(id);
resp.setContentType("text/html;charset=UTF-8");
resp.sendRedirect("list");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
6、 编写数据库操作
package com.my.site;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MySqlOperator {
private static final String MYSQL_URL = "jdbc:mysql://localhost:3309/ztest?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC";
private static final String MYSQL_NAME = "root";
private static final String MYSQL_PASSWORD = "MySql@8022";
private static Connection conn = null;
private static Statement stt = null;
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PASSWORD);
stt = conn.createStatement();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public static boolean loginChecked(String uname,String pwd){
try {
Statement stt = conn.createStatement();
String sql = "select * from user where account='"+uname+"' and password = '"+pwd+"'";//这样写是有sql注入漏洞的,后面会用到
System.out.println(sql);
ResultSet rs = stt.executeQuery(sql);
while (rs.next()){
return true;
}
} catch ( SQLException e) {
e.printStackTrace();
}
return false;
}
public static boolean addUser(String uname,String pwd,String realName,String sex){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss");
String data_str = sdf.format(date);
String sql = "insert into user(account,name,password,sex,add_time) values" +
" ('"+uname+"','"+realName+"','"+pwd+"','"+sex+"','"+data_str+"')";
System.out.println(sql);
try {
if(conn.isValid(2)){
initConn();
}
stt.execute(sql);
return true;
} catch (SQLException throwable) {
throwable.printStackTrace();
return false;
}
}
public static List listAllUser(){
String sql = "select * from user";
ResultSet rs = null;
ArrayList all = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss");
try {
rs = stt.executeQuery(sql);
while (rs.next()){
UserEntity user = new UserEntity();
user.setUname(rs.getString("account"));
user.setPwd(rs.getString("password"));
user.setRealName(rs.getString("name"));
user.setSex(rs.getString("sex"));
user.setAdd_time(sdf.format(rs.getDate("add_time")));
user.setId(rs.getInt("id"));
all.add(user);
}
System.out.println(sql);
System.out.println("查询条数:"+all.size());
return all;
} catch (SQLException throwable) {
throwable.printStackTrace();
}
return all;
}
public static boolean delUser(int id) {
String sql = "delete from user where id="+id;
try {
stt.execute(sql);
return true;
} catch (SQLException throwable) {
throwable.printStackTrace();
return false;
}
}
public static void initConn(){
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(MYSQL_URL,MYSQL_NAME,MYSQL_PASSWORD);
stt = conn.createStatement();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public static boolean updateUser(int id, String uname, String pwd, String realName, String sex) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss");
String data_str = sdf.format(date);
String sql = "update user set account='"+uname+"',password='"+pwd+"',name='"+realName+"',sex='"+sex+"',add_time='"+data_str+"' where id="+id;
System.out.println(sql);
try {
if(conn.isValid(2)){
initConn();
}
stt.execute(sql);
return true;
} catch (SQLException throwable) {
throwable.printStackTrace();
return false;
}
}
}
7、 运行效果
到此这篇关于使用idea开发javaWeb应用程序的思路(实现用户的增删改查)的文章就介绍到这了,更多相关idea 开发javaweb应用程序内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!



