• Servlet(六):Cookie


    Cookie 学习:
    问题:
      HTTP 协议是没有记忆功能的,一次请求结束后,相关数据会被销毁。如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗?
    解决:
      使用 Cookie 技术
    解释:
      Cookie 技术其实是浏览器端的数据存储技术,解决了不同请求需要使用相同的请求数据的问题。我们把请求需要共享的请求数据,存储在浏览器端,避免用户进行重复的书写请求数据。但是哪些数据需要使用 Cookie 技术存储起来是一个主观问题,需要在后台进行响应的时候来告诉浏览器,有些数据其他请求还会使用,需要存储起来。
    特点:
      浏览器端的数据存储技术
      适合少量数据
      键值对
      不安全
    使用:
      Cookie 数据存储:
              临时存储:
                不设置 cookie 信息的存储时间,周期为一次会话,
              存储在浏览器内存中
              定时存储:
                设置存储时间,周期为时间设置,存储在用户电脑中。
      Cookie 数据获取:
    总结:
      Cookie 技术解决了不同请求发送之间的数据共享问题。

    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    /**
     * Cookie学习:
     *         作用:解决了发送的不同请求的数据共享问题
     *         使用:
     *             Cookie的创建和存储
     *                 //创建Cookie对象
     *                     Cookie c=new Cookie(String name, String value);
     *                 //设置cookie(可选)
     *                     //设置有效期
     *                     c.setMaxAge(int seconds);
     *                    //设置有效路径
     *                    c.setPath(String uri)
     *                //响应Cookie信息给客户端
     *                    resp.addCookie(c);
     *            Cookie的获取
     *                //获取Cookie信息数组
     *                Cookie[] cks=req.getCookies();
     *                //遍历数组获取Cookie信息
     *                    使用for循环遍历即可,示例:
                             if(cks!=null){
                                for(Cookie c:cks){
                                    String name=c.getName();
                                    String value=c.getValue();
                                    System.out.println(name+":"+value);
                                }
                            }
     *        注意:
     *            一个Cookie对象存储一条数据。多条数据,可以多创建几个Cookie对象进行存储。
     *        特点:
     *            浏览器端的数据存储技术。
     *            存储的数据声明在服务器端。
     *            临时存储:存储在浏览器的运行内存中,浏览器关闭即失效。
     *            定时存储:设置了Cookie的有效期,存储在客户端的硬盘中,在有效期内符合路径要求的请求都会附带该信息。
     *            默认cookie信息存储好之后,每次请求都会附带,除非设置有效路径
     * @author MyPC
     *
     */
    public class CookieServlet extends HttpServlet {
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            //设置请求编码格式
            req.setCharacterEncoding("utf-8");
            //设置响应编码格式
            resp.setContentType("text/html;charset=utf-8");
            //获取请求信息
            
            //处理请求信息
            //响应处理结果
                //使用Cookie进行浏览器端的数据存储
                    //创建Cookie对象
                    Cookie c=new Cookie("mouse", "thinkpad");
                    Cookie c2=new Cookie("key", "bjsxt");
                    //设置Cookie
                        //设置Cookie的有效期
                        c2.setMaxAge(3*24*3600);
                        //设置有效路径
                        c2.setPath("/cookie/gc");
                    //响应Cookie信息
                    resp.addCookie(c);
                    resp.addCookie(c2);
                //直接响应
                    resp.getWriter().write("Cookie学习");
                //请求转发
                //重定向
        }
    }
    //获取Cookie信息
                    Cookie[] cks=req.getCookies();
                    if(cks!=null){
                        for(Cookie c:cks){
                            String name=c.getName();
                            String value=c.getValue();
                            System.out.println(name+":"+value);
                        }
                    }
  • 相关阅读:
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    OA办公系统 Springboot Activiti6 工作流 集成代码生成器 vue.js 前后分离 跨域
    java企业官网源码 自适应响应式 freemarker 静态引擎 SSM 框架
    java OA办公系统源码 Springboot Activiti工作流 vue.js 前后分离 集成代码生成器
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    java 视频播放 弹幕技术 视频弹幕 视频截图 springmvc mybatis SSM
    最后阶段总结
    第二阶段学习总结
    第一阶段学习总结
  • 原文地址:https://www.cnblogs.com/jiulonghudefeizhai/p/10110702.html
Copyright © 2020-2023  润新知