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

点此查看本系列文章目录、源代码、配套视频教程

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页面
	}

解释下:

  • 登录成功后,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;// 返回查询结果
	}

此时随意输入用户名,密码点击登录,即可进入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>

5. 测试

登录后效果如下,大功告成!
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值