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

简介: 本文目录1. 本章任务2. 添加修改按钮3. 在RouteServlet中添加用户编辑页面跳转4. 新增用户编辑页面5. 处理编辑提交请求6. 测试验证

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,验证之,大功告成!

image.png

image.png

image.png

相关文章
|
5天前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
|
5天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
|
2天前
|
存储 设计模式 搜索推荐
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
5 1
|
2天前
|
XML 前端开发 Java
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(上)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(上)
7 0
|
1月前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
40 5
|
1月前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
37 1
|
5天前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
|
5天前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
|
5天前
|
前端开发 安全 Java
Java服务器端开发实战:利用Servlet和JSP构建动态网站
【6月更文挑战第23天】**Servlet和JSP在Java Web开发中扮演关键角色。Servlet处理业务逻辑,管理会话,JSP则结合HTML生成动态页面。两者协同工作,形成动态网站的核心。通过Servlet的doGet()方法响应请求,JSP利用嵌入式Java代码创建动态内容。实战中,Servlet处理数据后转发给JSP展示,共同构建高效、稳定的网站。虽然新技术涌现,Servlet与JSP仍为Java Web开发的基石,提供灵活且成熟的解决方案。**
|
5天前
|
缓存 负载均衡 安全
Servlet与JSP在Java Web应用中的性能调优策略
【6月更文挑战第23天】在Java Web中,Servlet和JSP调优至关重要,以应对高并发和复杂业务带来的性能挑战。优化包括Servlet复用、线程安全、数据库连接池,以及JSP的编译优化、使用JSTL、页面缓存和静态内容分离。全局优化涉及负载均衡、异步处理和缓存策略。通过这些实践,开发者能提升应用响应速度和吞吐量,确保高负载下的稳定运行。