Cookie技术[登录成功, 添加用户信息到Cookie, 页面"记住我"]
1. login.jsp
<form name="form1" method="post" action="${pageContext.request.contextPath}/sys/sysUserAction_isLogin.do"> 用户名:<input name="name" type="text" value="<%=name %>" id="name"/> 密码:<input name="password" type="password" value="<%=password %>" id="password"> 记住我:<input name="rememberMe" type="checkbox" id="rememberMe" value="yes" class="checkbox" <%=checked %>>
按钮 }
2. action
// 用户登录校验
public String isLogin() {
String loginFailure = "loginFailure";
// 校验验证码
boolean flag = SessionUtils.isCheckNum(request);
if (!flag) {
this.addFieldError(loginFailure, "验证码输入有误!请重新输入!");
return "login";
}
// 校验用户名和密码
String name = request.getParameter("name");
String password = request.getParameter("password");
SysUser sysUser = sysUserService.findSysUserByNameAndPassword(name, password);
if (sysUser == null) {
this.addFieldError(loginFailure, "用户名或密码错误 !");
return "login";
}
// 登录成功, 把用户信息存入session
SessionUtils.setSysUserToSession(sysUser, request);
// 处理Cookie
this.addCookie(name, request.getParameter("password"));
return "main";
}
// 创建Cookie
private void addCookie(String name, String parameter) {
// 1.创建cookie
Cookie nameCookie = new Cookie("name", name);
Cookie pwdCookie = new Cookie("password", request.getParameter("password"));
// 2.设置cookie的路径到 http://localhost:8080/crm/, 否则在登录页面将访问不到cookie, 就无法回写用户信息
nameCookie.setPath(request.getContextPath() + "/");
pwdCookie.setPath(request.getContextPath() + "/");
// 3.判断是否勾选了"记住我"复选框
String rememberMe = request.getParameter("rememberMe");
if (StringUtils.isBlank(rememberMe)) { // 不保存cookie
nameCookie.setMaxAge(0);
pwdCookie.setMaxAge(0);
} else {
// 4.保存cookie
nameCookie.setMaxAge(7*24*60*60);
pwdCookie.setMaxAge(7*24*60*60);
}
// 5.添加cookie到响应头
response.addCookie(nameCookie);
response.addCookie(pwdCookie);
}
效果: 登录一次, 记住我, 之后在cookie的生命周期内请求到登录页面都自动加载用户名和密码