且构网

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

JSP+Servlet培训班作业管理系统[4]–记录登录用户信息

更新时间:2022-04-22 03:30:32

1. 本章任务

上一篇已经完成了后台管理页面布局和样式。本篇来实现点击登录后显示用户信息,并且将登录用户的信息记录下来,以便在管理后台页面右上角显示登录用户的名字。


2. 点击登录后记录用户信息

Java Web项目支持使用Session保存用户信息,Session是非常神奇的,它标志着会话。


也就是说每个用户和Servlet之前都是唯一的Session,它能区分不同的用户与服务端的会话。一般直到浏览器关闭,Session才会销毁。所以特别适合用来保存用户信息。


好的,我们修改下LoginServlet,等用户登录成功后,将用户信息保存到Session中,代码如下:


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

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

 response.setContentType("text/html");

 request.setCharacterEncoding("utf-8");

 response.setCharacterEncoding("utf-8");

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

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

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


 LoginService lc = new LoginService();

 User user = null;

 String tipInfo = "";// 提示内容

 String page = "";// 跳转页面

 try {

  user = lc.checkLogin(userName, userPassword);

  if (user == null) {

   // 跳转到错误提示页面,并提示用户不存在

   tipInfo = "用户不存在";

   page = "tip.jsp";

  } else {

   // 登录成功,记录用户信息到Session,同时跳转管理后台页面

   request.getSession().setAttribute("loginUser", user);

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

  }

  // 根据用户角色显示不同内容

 } catch (Exception e) {

  // 跳转到错误提示页面,并提示相应错误信息

  tipInfo = e.getMessage();

  page = "index.jsp";

 }

 request.setAttribute("tipInfo", tipInfo);// 设置同手信息

 request.getRequestDispatcher("/" + page).forward(request, response);// 跳转到page页面

}

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

解释下:


登录成功后,user对象中包含登录成功的用户对象,将其以loginUser为名字保存到Session中。这样在会话过程中,随时可以从Session中取出当前用户信息。

如果登录成功,则令page="index.jsp";,即跳转管理后台页面。

3. 构造测试用户对象

由于服务类中检查登录方法并未真正访问数据库,所以此时我们直接模拟返回一个从用户信息,便于测试。修改LoginService代码如下:


public User checkLogin(String userName, String userPassword) throws Exception {

 if (userName.equals("") || userPassword.equals("")) {

  // 抛出输入信息异常

  throw new Exception("用户名和密码不能为空");

 }

 User user = null;

 try {

  // 从数据库中执行查询,此处暂时用一个固定对象代替

  user = new User();

  user.setUserId(1);

  user.setUserName("猫哥");

  user.setUserPassword("1234");

  user.setUserRole("student");// 学生

 } catch (Exception e) {

  // 抛出数据库异常

  throw new Exception("数据库操作异常:" + e.getMessage());

 }

 return user;// 返回查询结果

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

此时随意输入用户名,密码点击登录,即可进入index.jsp页面。


4. 显示登录用户信息

既然用户信息已经放到名为loginUser的Session中,我们可以在jsp页面中直接取出其userName属性并显示。


修改index.jsp页面如下:


    <div id="top">

    <!-- 标题部分 -->

    <div id="top_title">猫哥培训班作业管理系统</div>

    <!-- 登录用户信息部分 -->

    <div id="top_info">欢迎您,尊敬的:${loginUser.userName}</div>

   </div>

1

2

3

4

5

6

5. 测试

登录后效果如下,大功告成!

JSP+Servlet培训班作业管理系统[4]–记录登录用户信息