且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

JSP+Servlet培训班作业管理系统[13]–人员修改功能的实现

更新时间:2021-09-11 18:25:46

1. 本章任务

前面章节中已经实现了人员信息的浏览和新增,本章继续实现人员信息修改的功能。


2. 添加修改按钮

在表格的每一行添加修改的超级链接,点击后跳转RouteServlet,同时还需要传递操作类型method=editUser,最后还需要传递被编辑的用户的id。


注意传递操作类型是为了让RouteServlet知道跳转到用户编辑页面,传递用户id是为了后台查询出用户信息后传给用户编辑页面,因为用户编辑页面默认要加载用户当前信息。


 <table>

 <thead>

  <tr>

   <th>编号</th>

   <th>姓名</th>

   <th>角色</th>

   <th>操作</th>

  </tr>

 </thead>

 <c:forEach items="${users}" var="item">

  <tr>

   <td>${item.userId}</td>

   <td>${item.userName}</td>

   <td>${item.userRole}</td>

   <td><a

    href="/HomeworkSystem/RouteServlet?childPage=userEdit.jsp&userId=${item.userId}">编辑</a></td>

  </tr>

 </c:forEach>

</table>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

3. 在RouteServlet中添加用户编辑页面跳转

如果是用户编辑的请求,需要根据用户id加载用户信息


public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 // 设置输入输出格式、编码

 response.setContentType("text/html");

 request.setCharacterEncoding("utf-8");

 response.setCharacterEncoding("utf-8");

 // 获取用户在网页输入的用户名和密码

 String childPage = request.getParameter("childPage");

 request.setAttribute("childPage", childPage);

 if (childPage.equals("userManage.jsp")) { // 进入人员管理页面需要携带人员列表信息

  UserDao userDao = new UserDao();

  List<User> users = userDao.getUsers();

  request.setAttribute("users", users);

 } else if (childPage.equals("userEdit.jsp")) {

  UserDao userDao = new UserDao();

  String userId = request.getParameter("userId");

  User user = userDao.getById(userId);

  request.setAttribute("user", user);

 }

 request.getRequestDispatcher("/index.jsp").forward(request, response);// 跳转到index.jsp

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

此处需要在UserDao中编写一个通过id获取用户的方法,如下:


/**

 * 通过id获取用户

 */

public User getById(String userId) {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "select * from user where user_id=? ";

  ps = conn.prepareStatement(sql);

  ps.setString(1, userId);

  rs = ps.executeQuery();

  if (rs.next()) {

   return makeOneUser(rs);

  } else {

   return null;

  }

 } catch (SQLException e) {

  System.out.println(e.toString());

  return null;

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

4. 新增用户编辑页面

新增用户编辑页面userEdit.jsp。


注意该页面进来的时候,需要显示当前编辑用户的信息,注意表单中还需要保存下userId信息,便于提交表单后确定当前修改的用户。


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 使用c:标签需要添加本行代码 -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>userEdit.jsp</title>

</head>

<body>

<form action="/HomeworkSystem/UserServlet?method=userEdit"

 method="post">

 <table>

  <tr>

   <td>编号:</td>

   <td><input type="text" name="userId" value="${user.userId}"

    readonly /></td>

  </tr>

  <tr>

   <td>姓名:</td>

   <td><input type="text" name="userName" value="${user.userName}" />

   </td>

  </tr>

  <tr>

   <td>密码:</td>

   <td><input type="text" name="userPassword"

    value="${user.userPassword}" /></td>

  </tr>

  <tr>

   <td>角色:</td>

   <td><select name="userRole" value="${user.userRole}">

     <option value="master">校长</option>

     <option value="teacher">老师</option>

     <option value="student">学生</option>

   </select></td>

  </tr>

 </table>

 <input type="submit" value="保存"></input>

</form>

</body>

</html>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

5. 处理编辑提交请求

在UserServlet中处理编辑提交请求,注意处理完毕也是返回用户列表页面。


public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 处理post请求

 // 设置输入输出格式、编码

 response.setContentType("text/html");

 request.setCharacterEncoding("utf-8");

 response.setCharacterEncoding("utf-8");

 // 获取method参数

 String method = request.getParameter("method");

 // 用户操作数据库

 UserDao userDao = new UserDao();

 if (method.equals("userAdd")) {// 新增用户

  // 获取用户在网页输入的用户名和密码

  User user = new User();

  user.setUserName(request.getParameter("userName"));

  user.setUserPassword(request.getParameter("userPassword"));

  user.setUserRole(request.getParameter("userRole"));

  // 保存到数据库

  userDao.add(user);

 } else if (method.equals("userEdit")) {// 编辑用户

  // 获取用户在网页输入的用户名和密码

  User user = new User();

  user.setUserId(Integer.parseInt(request.getParameter("userId")));

  user.setUserName(request.getParameter("userName"));

  user.setUserPassword(request.getParameter("userPassword"));

  user.setUserRole(request.getParameter("userRole"));

  // 保存到数据库

  userDao.update(user);

 }

 // 携带最新用户数据到人员管理页面

 request.setAttribute("users", userDao.getUsers());

 // 跳转到管理后台页面,且子页面是用户管理

 request.setAttribute("childPage", "userManage.jsp");

 request.getRequestDispatcher("/index.jsp").forward(request, response);

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

6. 测试验证

重启tomcat,验证之,大功告成!

JSP+Servlet培训班作业管理系统[13]–人员修改功能的实现

JSP+Servlet培训班作业管理系统[13]–人员修改功能的实现

JSP+Servlet培训班作业管理系统[13]–人员修改功能的实现