用户登陆保存账号信息业务逻辑

    本文主要说明如何将登陆页面的信息提交到servlet,并在servlet通过session对象返回账号信息,从而在主页显示用户名等信息内容。

一、login.jsp(登录)

<form action="servlet/LoginServlet" method="post">
<label>用户名: </label>
<label>密码: </label>
<input name="username" value="" />
<input type="submit" value="登录" class="login" style="cursor: pointer;"/>
<input type="password" name="password" value="">
/form>

以上的示例中,通过表单的形式将登录参数发送给servlet包下的LoginServlet处理。

二、LoginServlet(逻辑控制层)

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

		Users u = new Users(); // 服务器传来的账号和密码
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		u.setUsername(username);
		u.setPassword(password);
		ItemsDAO a = new ItemsDAO();// 调用DAO层方法
		int i = 1;
		// 利用for循环根据id查询传过来的账号密码是否正确
		for (i = 1; i <= a.getUsernumber(); i++) {
			if (u.getUsername().equals(a.getUser(i).getUsername())
					&& u.getPassword().equals(a.getUser(i).getPassword())) {	
				u.setMoney(a.getUser(i).getMoney());
				// 把登录成功的用户对象保存在session中
				request.getSession().setAttribute("regUser", u);
				//登录成功跳转到主页
				response.sendRedirect(request.getContextPath() + "/index.jsp");
				return;
			}
		}
		// 否则跳转到登录失败页面
		response.sendRedirect(request.getContextPath() + "/login_failure.jsp");
		return;
	}
上述示例中表单提交的是post请求,所以我们在servlet覆写dopost()方法,如果我们想把servlet中的登录成功的Users对象传过去则需要将其保存在session对象里,代码为:
request.getSession().setAttribute("regUser", u);

我们将session的key命名为“regUser”,剩下要做的就是在主页index.jsp中用javaBean接受session对象。

三、index.jsp

<h1>商品展示</h1>
	<jsp:useBean  id="regUser" class="com.po.Users" scope="session"/>
	<jsp:setProperty name="regUser" property="*" />
	<p align="right">用户:<jsp:getProperty name="regUser" property="username"/></p>
	<p align="right">余额:<jsp:getProperty name="regUser" property="money"/>元</p>
	<hr>
用javaBean接收“regUser”里的数据,class指定包路径,scope选择session,影响一次会话的内容。之后依次显示用户和余额就行了。

猜你喜欢

转载自blog.csdn.net/qq_42365082/article/details/80913811