一.在login.jsp文件中设置:
<div align="center">
<h1>Estore_登录</h1>
<font color="red">${msg}</font>
<form action="<%=request.getContextPath()%>/LoginServlet" method="post">
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="username" value='<%=ck==null?"":URLDecoder.decode(ck.getValue(),"utf-8") %>' /></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"/></td>
</tr>
<tr><td><input type="checkbox" name="remname" value="true" <%=ck==null?"":"checked" %>/>记住用户名</td>
<td><input type="checkbox" name="autologin" value="true"/>30天自动登录</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="登录"/></td>
</tr>
</table>
</form>
</div>
二.在loginServlet中doPost方法实现自动登录操作:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1 获得jsp页面传入的用户名和密码
String name = request.getParameter("username");
String pwd = request.getParameter("password");
//通过MD5Utils方式进行加密
pwd = MD5Utils.md5(pwd);
//2 调用业务(service)类中的方法,来检查数据库中的用户名、密码与传入的用户名密码是否一致,如果一致将用户包装:
User user=service.findUserByNameAndPwd(name,pwd);
//如果传入的对象为空,在login.jsp页面返回用户名或密码错误,并且转发页面,因为转发只涉及到一个请求,故使用此方法
if(user==null){
request.setAttribute("msg", "用户名或密码错误");
request.getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
//3 根据检查的结果来调转页面
request.getSession().setAttribute("user", user);
//记住用户名
if("true".equals(request.getParameter("remname"))){
Cookie remname = new Cookie("remname",URLEncoder.encode(user.getUsername(),"utf-8"));
//设置cookie保存的最长时间为30天
remname.setMaxAge(3600*24*30);
remname.setPath(request.getContextPath());
response.addCookie(remname);
}
else{
Cookie remname = new Cookie("remname",URLEncoder.encode(user.getUsername(),"utf-8"));
remname.setMaxAge(0);
remname.setPath(request.getContextPath());
response.addCookie(remname);
}
//处理30天自动登录
if("true".equals(request.getParameter("autologin"))){
Cookie autologinC = new Cookie("autoLogin",URLEncoder.encode(user.getUsername(),"utf-8")+":"+user.getPassword());
autologinC.setMaxAge(3600*24*30);
autologinC.setPath(request.getContextPath());
response.addCookie(autologinC);
}
response.sendRedirect("/estore/index.jsp");
}