创建cookie
前端表单代码:
<form class="loginForm" id="loginForm" action="${ctx}/sys/user/loginUser" method="post">
<div class="form-group">
<input class="form-control" name="name" id="name" type="text" placeholder="请输入用户名">
</div>
<div class="form-group">
<input class="form-control" name="password" id="password" type="password" placeholder="请输入密码">
</div>
<div class="form-group">
<label for="remember" style="color: #fff;font-size: 16px;">
<input type="checkbox" name="remember" id="remember" value="0"/> 记住我
</label>
</div>
<div class="form-group">
<button class="btn btn-primary" type="submit">登录</button>
</div>
</form>
controller层代码:
/**
* 登录
* remember 是否勾选"记住我"复选框,没有选中为null
*/
@RequestMapping(value = {"loginUser"})
public String loginUser(User user,String remember,Model model,HttpSession session,HttpServletRequest request, HttpServletResponse response){
try {
user = userService.userNamelogin(user);
if (user != null) {
if (StringUtils.isNotBlank(remember)) {
CookieUtil.addCookie(user.getName(), user.getPassword(), response, request);
}
model.addAttribute("user", user);
session.setAttribute("USER", user);
return "index";
}else{
model.addAttribute("message", "用户名或密码不正确。");
}
} catch (Exception e) {
e.printStackTrace();
}
return "login";
}
CookieUtil 工具类:
import java.io.UnsupportedEncodingException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
/**
* 记住我
*/
public class CookieUtil {
//加入cookie中
public static void addCookie(String name,String password, HttpServletResponse response, HttpServletRequest request) throws UnsupportedEncodingException {
if(StringUtils.isNotBlank(name)&&StringUtils.isNotBlank(password)){
//创建Cookie
Cookie nameCookie=new Cookie("name",java.net.URLEncoder.encode(name,"utf-8"));
Cookie passwordCookie=new Cookie("password",password);
//设置Cookie的父路径
nameCookie.setPath(request.getContextPath()+"/");
passwordCookie.setPath(request.getContextPath()+"/");
//设置cookie的有效时间(天数*24小时*分*秒)
nameCookie.setMaxAge(7*24*60*60);
passwordCookie.setMaxAge(7*24*60*60);
//加入Cookie到响应头
response.addCookie(nameCookie);
response.addCookie(passwordCookie);
}
}
}
这样cookie就记住了我们的信息,将信息存储到了浏览器中,以后每次打开页面的时候就不用登录了。
setMaxAge(-1)表示当关闭浏览器后cookie就会消失。
销毁cookie
如果要销毁cookie,比如说退出登录,注销登录的时候
点击退出,可以在后台将cookie的值设置为null,有效期设置为0
Cookie name = new Cookie("name",null);
Cookie pwd = new Cookie("password", null);
name.setMaxAge(0);
name.setPath(request.getContextPath()+"/");
response.addCookie(name);
pwd.setMaxAge(0);
pwd.setPath(request.getContextPath()+"/");
response.addCookie(pwd);