Servlet---Cookie

Cookie

🐲无状态的HTTP协议

  • HTTP是一个无状态的协议,当一个客户端向服务端发送请求,在服务器返回响应后,连接就关闭了,在服务端不保留连接信息。

🐲什么是Cookie

  1. Cookie是一种客户端保持HTTP状态信息的技术
  2. Cookie是在浏览器访问服务器的某一资源时,有web服务器在响应头传送给浏览器的数据
  3. 浏览器如果保存了某一cookie,那么以后每次访问服务器的时候,都会在请求头传递给服务器
  4. 一个cookie只能记录一种信息,是key-value形式
  5. 一个web站点可以给浏览器发送多个cookie,一个浏览器也可以存储多个站点的cookie
  6. cookie在服务端完成,传给客户端
  7. cookie用来处理客户端发送不同请求的时候如何使用相同的参数信息

🐲Cookie的使用

Cookie cookie = new Cookie("0001","beijing");
response.addCookie(cookie);
//设置cookie的参数
cookie.setMaxAge(int seconds);
cookie.setPath(String url);
//获取cookie对象
Cookie[] cookies = request.getCookies();

🐲Cookie的特点

  1. cookie是保存在浏览器端的数据名称

  2. cookie分类:

    • 临时cookie:默认是存储在内存中的,所以当浏览器关闭的时候,cookie自动失效

    • 持久化cookie:保存在浏览器的某一存储目录,当时间过期后才会失效

      cookie.setMaxAge(3*24*3600);   //给cookie对象添加时间有效期,单位是秒
      
    • 每一个cookie对象中保存一个key-value键值对的数据,想要存储多个k-v数据,需要创建多个cookie对象

    • 给cookie设置固定路径

      cookie.setPath("cookie/abc");
      

🐲Cookie实现免密码登录

  1. 用户发送验证cookie信息的请求,编写对应的servlet进行处理

  2. 如果包含cookie,直接跳转到成功页面

  3. 如果不包含cookie,直接跳转到登录页面

    //设置request和response的编码
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("gbk");
    
    //获取cookie对象
    Cookie[] cookies = request.getCookies();
    //如果cookies等于null,直接跳转得到登录页面进行登录请求,如果不为空,进行相关处理
    if(cookies != null) {
        for(Cookie c:cookies) {
            String key = c.getName(); 
            if("uid" != null) {
                String value = c.getValue();
                User u = userService.getUserById(Integer.valueOf(value));
                //如果u不为null,那么有值,直接跳转
                if(u != null) {
                    response.sendRedirect("hello");
                }else {
                     response.sendRedirect("page");
                }
            }else {
                 response.sendRedirect("page");
            }
            
        }
    }else {
        response.sendRedirect("page");
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值