用户登陆保存账号信息业务逻辑
程序员文章站
2022-03-30 13:06:19
...
本文主要说明如何将登陆页面的信息提交到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,影响一次会话的内容。之后依次显示用户和余额就行了。