前两天把注册给写完了,昨天试着写了写登陆。这里主要说一下登陆的 记住我 按钮是如何实现的
Cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
与之前说过的session不同,session是保存在服务端的,而cookie是保存在客户端的。
首先先在前端通过Jquey来判断,用户是否勾选了 记住我 复选框,如果勾选了,那么后台将用户的账号和密码写入cookie
首先先创建Cookie,然后将用户名和密码写入Cookie,设置号Cookie存在的时长,用response写入Cookie
后端代码:
//添加缓存
@RequestMapping("/add_cookie")
@ResponseBody
public String add_cookie(User user, HttpServletResponse response) throws UnsupportedEncodingException {
String username = user.getUserName();
String userPassword = user.getUserPassword();
//将用户名存入cookie 并且设置cookie存在时长
Cookie cookie_username = new Cookie("username", URLEncoder.encode(username,"utf-8"));
cookie_username.setMaxAge(60*60*60);
response.addCookie(cookie_username);
//将密码存入cookie 并且设置cookie存在时长
Cookie cookie_userPassword = new Cookie("userPassword",URLEncoder.encode(userPassword,"utf-8"));
cookie_userPassword.setMaxAge(60*60*60);
response.addCookie(cookie_userPassword);
return null;
}
HttpServletResponse对象介绍
HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。查看HttpServletResponse的API,可以看到这些相关的方法
当用户不想再让自己的用户名和密码保存在Cookie中,那么将执行删除缓存的方法
代码如下:
//删除缓存
@RequestMapping("/del_cookie")
@ResponseBody
public String del_cookie(HttpServletRequest request,HttpServletResponse response){
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
// 找到需要删除的Cookie
if("username".equals(cookie.getName())){
// 设置生存期为0
cookie.setMaxAge(0);
// 设回Response中生效
response.addCookie(cookie);
}
if("userPassword".equals(cookie.getName())){
// 设置生存期为0
cookie.setMaxAge(0);
// 设回Response中生效
response.addCookie(cookie);
}
}
}
return null;
}
最后只用在用户每次打开首页时候,重定向中执行查找Cookie的方法就可以实现了
//判断cookiees是否为空
if(request.getCookies()!=null){
//将cookies值放入cookies数组
Cookie[] cookies = request.getCookies();
//判断cookies数组
if (cookies != null && cookies.length > 0) {
//遍历cookies数组
for (Cookie cookie : cookies) {
if (cookie.getName().equals("username")) {
model.addAttribute("username", URLDecoder.decode(cookie.getValue(), "utf-8"));
}
if (cookie.getName().equals("userPassword")){
model.addAttribute("userPassword",URLDecoder.decode(cookie.getValue(),"utf-8"));
}
}
}
}