zoukankan      html  css  js  c++  java
  • 我爱Java系列---【Cookie和Session】

    一、四大域对象所对应的的对象

    域对象 

                                    

    存取用法(Servlet存—>jsp取)

    request.getRequestDispatcher("/demo06.jsp").forward(request, response);

                                                                                                                  

    作用范围

    ServletContext

    包含application和config

    getServletContext().setAttribute("name","wangwu");

    ${applicationScope.name}

    整个web项目,多个servlet可以共享数据。
     Session          

    request.getSession().setAttribute("name","lisi");

    ${sessionScope.name}                   

                                                                                    

    会话一次会话
     Request

    request.setAttribute("name","zhangsan");

    ${requestScope.name}

    整个请求链(请求转发也存在)
    PageContext

    PageContext方法:set()、get()、remove()

    pageContext.findAttribute(“key”) 在这四大域对象中依次查找

    一个jsp页面 ,一般用来jsp标签的数据传输

    注意: 从上往下,作用范围由大到小。

    pageContext作用

    1.代理其他的三大域对象 pageContext.setAttribute(“key”,”value”,pageContext.SESSION_SCOPE); 存放  在session中代理了session

    2.全域查找 pageContext.findAttribute(“key”) 在这四大域对象中依次查找

    3.获取其他的jsp八大内置对象

    pageContext 中代表域的常量    

      PageContext.APPLICATION_SCOPE    

                PageContext.SESSION_SCOPE    

                PageContext.REQUEST_SCOPE    

                PageContext.PAGE_SCOPE          

      findAttribute方法,在四大域中搜寻属性,搜寻的顺序是page域、request域、session域、application域,从小域到大域开始搜索,如果搜索到就直接获取该值,如果所有域中都找不到,返回一个null(与el表达式不同,此处返回null,对网页是不友好的)  

     

    二、cookie和session  

    1.cookie             

    概述:

    Cookie , 浏览器保存用户数据的技术 .

    使用:

    创建 ,在 服务器端 new Cookie对象 ,通过响应发送到 浏览器.

             // 创建 Cookie
             Cookie cookie = new Cookie("username", "tom");
             Cookie cookie2 = new Cookie("Time", System.currentTimeMillis()+"");

            Cookie cookie3 = new Cookie("username", "jack");

            // 添加 多个Cookie
             response.addCookie(cookie);
             response.addCookie(cookie2);

            // cookie3 与 cookie  key 重名了
             response.addCookie(cookie3);

    // 注意 : 如果key重复, 响应时是多个 , 浏览器的保存最后一个value.

    再次请求, 浏览器将 cookie提交服务器

    // 获取  cookie数组
    Cookie[] cookies = request.getCookies();

    System.out.println(cookies);


    // 遍历数组
    for (Cookie cookie : cookies) {
         System.out.println(cookie);
         // 获取 cookie名字 与 值 
         System.out.println(cookie.getName()+"==" + cookie.getValue());

    }

    cookie设置

    时间 : 默认cookie是关闭浏览器,一次会话结束就消失了 . 通过setMaxAge(second)秒值 ,生命时间

        // 创建
          Cookie c  =   new Cookie("time" , System.currentTimeMillis()+"" );

         // 设置时间
           c.setMaxAge(60); // 60秒 一分钟


           //添加到 response
           response.addCookie(c);

    路径 : 默认cookie就是当前web应用 .当前应用中的生成Cookie,在访问应用中其他资源,也会提交 .

    setPath(path) 通过设置路径,对cookie进行筛选 .

              // 设置 cookie
             Cookie cookie = new Cookie("password" , "abcdef");
             // 设置 cookie 路径
             cookie.setPath("/web11/aaa");
             response.addCookie(cookie);

    // 注意 : 路径写成 绝对路径, /web11  开始

    删除Cookie

             // 创建  Cookie
             Cookie username = new Cookie("username", "");

            //1. 设置时间为0
             username.setMaxAge(0);


             //  2.路径一致 ,默认路径可以省略

           
             // 3. 响应携带
             response.addCookie(username);

    2.Session

    概述 :

    Session, 服务器保存用户数据的技术

    使用 :

    获取session , 依靠request的getSession . Session 对象服务器创建 , 通过 request获取,

    当getSession 方法时, 判断请求中,是否有JSESSIONID, 如果没有,必然创建新的session .

    如果有JSESSIONID ,通过id查询对应Session ,找到了就返给你, 找不到 创建新的session .

    代码演示:

    存储数据

           // 获取Session
             HttpSession session = request.getSession();

            // 保存数据
             session.setAttribute("username" , "tom");

    获取数据

           // 获取 session
            HttpSession session = request.getSession();

           // 获取  数据 ,通过 key 获取value 
            Object username = session.getAttribute("username");

           System.out.println(username);

    session持久化

    依靠cookie生命的延长 , 保证 JSESSIONID 存在 ,所以 可以 关闭浏览器,依然访问Session

         

    session持久化

            // 1. 获取 session
            HttpSession session = request.getSession();

           // 2. 获取 JSESSIONID
            String id = session.getId();
            System.out.println(id);

           // 3. 把 id 保存 一个 Cookie中  , 键 名称 必须 JSESSIONID
            Cookie c = new Cookie("JSESSIONID", id);

           // 4. 设置时间
           c.setMaxAge(60 * 60 );

           // 5.  response 响应 到浏览器
           response.addCookie(c);

    cookie和session区别
     

    cookie

    session

    保存位置

    浏览器

    服务器

    数据类型

    String

    对象

    安全行

    不安全

    安全

     





     

    愿你走出半生,归来仍是少年!
  • 相关阅读:
    js的解析顺序 作用域 严格模式
    弹性盒模型----容器属性
    tomcat解压版的配置与使用
    将mysql中一行中的几个字段 转换成一列并从其他数据库中查对应的邮件信息
    电脑快捷键
    icell更改用户管理员
    kettle下载地址
    pycharm激活码
    leetcode-111. 二叉树最小深度 · Tree + 递归
    leetcode-102.层序遍历二叉树(正序)· BTree
  • 原文地址:https://www.cnblogs.com/hujunwei/p/10951105.html
Copyright © 2011-2022 走看看