JavaWeb——Cookie技术
  TEZNKK3IfmPf 2023年11月13日 16 0
1.服务器写cookie的原理:使用响应头set-Cookie将cookie信息发送到浏览器
2.服务端读cookie的原理:
     a.浏览器在访问服务器的时候,会遍历保存的所有cookie,cookie的path属性符合的,自动发送给服务器
     b.浏览器使用请求头Cookie将cookie信息发送
3.cookie存活时间的问题
     a.cookie默认的存活时间,浏览器关闭,cookie消失,这个时候,cookie并没有在硬盘上保存,只是保存在浏览器内存中
     b.如何让cookie长久保存: 手动设置cookie的存活时间: setMaxAge() 单位是秒
     c.setMaxAge()可以使用的值:
          1)默认值:-1,将cookie保存在浏览器内存中
          2)正整数:单位是秒,cookie存活时间手动设置
          3)0:实现删除效果
4.cookie路径的问题:
     a.写cookie的时候有一个默认的路径,读cookie的时候,浏览器如果访问的资源和写的cookie的路径一致,将会自动把cookie使用请求发送到服务端
     b.写cookie的时候,可以使用setPath()重新指定路径
     c.写cookie的时候,path:
          /Suke/:只有浏览器访问的资源是/Suke/直接子资源才能携带
          /Suke/app/:只有浏览器访问的资源是/Suke/直接子资源和/Suke/app/资源才能携带
5.cookie缺点:不同的浏览器保存的cookie不同,因为各家浏览器保存的路径不同。
     a.cookie不能保存中文
     b.每个浏览器最多保存300多个cookie(现在变了,各家不一样了!)
     c.每个站点最多分配20个cookie
     d.每个cookie最大保存4k内容

代码实现 :

@WebServlet(name = "cookie1", urlPatterns = "/cookie1")
public class Cookie1Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //1.cookie虽然是将数据保存在客户端,但是需要从服务端写数据到客户端
        //  创建cookie对象(cookie是一个map类型的数据结构)
        //  只能保存字符串数据,无法直接保存对象(可以将对象转换为json数据(字符串类似的数据结构),保存)
        Cookie cookie = new Cookie("user", "admin");
        //2.设置cookie的一些属性(这个步骤可以省略,前提是不需要设置)
        cookie.setMaxAge(10); //设置cookie的存活时间
        //  cookie.setPath();   //设置cookie的路径
        //3.将cookie写入到客户端(浏览器)
        resp.addCookie(cookie);
    }
}
@WebServlet(name = "cookie2", urlPatterns = "/cookie2")
public class Cookie2Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //4.读取cookie
        Cookie[] cookies = req.getCookies();
        //5.迭代所有的cookie对象
        if (cookies == null) {
            System.out.println("没有cookie");
        } else {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals("user")) {
                    String value = cookie.getValue();
                    System.out.println("user = " + value);
                }
            }
        }
    }
}

@WebServlet(name = "cookie3", urlPatterns = "/cookie3")
public class Cookie3Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //实现删除cookie
        //1.创建cookie对象(需要跟删除的cookie的名字相同)
        Cookie cookie = new Cookie("user", "admin");
        //2.设置cookie的一些属性(这个步骤可以省略,前提是不需要设置)
        cookie.setMaxAge(0);    //设置cookie的存活时间
        //  cookie.setPath();   //设置cookie的路径
        //3.将cookie写入到客户端(浏览器)
        resp.addCookie(cookie);
    }
}

@WebServlet(name = "cookie4", urlPatterns = "/cookie4")
public class Cookie4Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //实现删除cookie
        //1.创建cookie对象(需要跟删除的cookie的名字相同)
        Cookie cookie = new Cookie("password", "123456");
        //2.设置cookie的一些属性(这个步骤可以省略,前提是不需要设置)
        //cookie.setMaxAge(0);    //设置cookie的存活时间
        //cookie.setPath();      //设置cookie的路径
        //3.将cookie写入到客户端(浏览器)
        resp.addCookie(cookie);
    }
}

@WebServlet(name = "cookie5", urlPatterns = "/app/cookie5")
public class Cookie5Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //实现删除cookie
        //1.创建cookie对象(需要跟删除的cookie的名字相同)
        Cookie cookie = new Cookie("age", "23");
        //2.设置cookie的一些属性(这个步骤可以省略,前提是不需要设置)
        //cookie.setMaxAge(0);    //设置cookie的存活时间
        //cookie.setPath();      //设置cookie的路径
        //3.将cookie写入到客户端(浏览器)
        resp.addCookie(cookie);
    }
}

@WebServlet(name = "cookie6", urlPatterns = "/app/cookie6")
public class Cookie6Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //4.读取cookie
        Cookie[] cookies = req.getCookies();
        //5.迭代所有的cookie对象
        if (cookies == null) {
            System.out.println("没有cookie");
        } else {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals("user")) {
                    String value = cookie.getValue();
                    System.out.println("user = " + value);
                }
            }
        }
    }
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
TEZNKK3IfmPf