利用Cookie保存用户基本信息

Cookie
  Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

与之前说过的session不同,session是保存在服务端的,而cookie是保存在客户端的。

首先先在前端通过Jquey来判断,用户是否勾选了 记住我 复选框,如果勾选了,那么后台将用户的账号和密码写入cookie

首先先创建Cookie,然后将用户名和密码写入Cookie,设置号Cookie存在的时长,用response写入Cookie

后端代码:

//添加缓存
@RequestMapping("/add_cookie")
@ResponseBody
public String add_cookies(User user,HttpServletResponse response)throws Exception{
String username=user.getUserName();
String password=user.getPassWord();

    //将用户名存入cookie 并且设置cookie存在时长
   Cookie cookie_username= new cookie("username",URLEncoder.encode(username,"utf-8"));
   // 设置生存时间
   cookie_username.setMaxAge(60*60*60);
   //将cookie 写入浏览器
   response.addCookie(cookie_username);

//将密码存入cookie 并且设置cookie存在时长
Cookie cookie_password= new cookie(“password”,URLEncoder.encode(password,“utf-8”));
// 设置生存时间
cookie_password.setMaxAge(606060);
// 将cookie 写入浏览器
response.addCookie(cookie_password);
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”));
}
}
}
}

发布了32 篇原创文章 · 获赞 7 · 访问量 8540

猜你喜欢

转载自blog.csdn.net/weixin_44516119/article/details/103850501
今日推荐