共享域 cookie session

概念

1. 共享域

  • 概念
    • 共享域就是存储数据的对象,类似于快递柜
    • 一方存放数据到共享域,一方从共享域中提取数据,间接完成数据的获取
  • 共享域对象有四个服务范围(方法相同,范围不同)

    • ServletContext

      • 整个项目的资源都可以访问
      • 使用概率小,因为范围太大,用于设置项目整体属性
        1. // 获取共享域对象
        2. ServletContext sc = getServletContext();
        3. // 设置存储数据
        4. sc.setAttribute("name", "root");
        5. // 获取存储数据,并发送给客户端
        6. resp.getWriter().print( (String)sc.getAttribute("name") );
    • HttpSession

      • 一次会话内
      • 可存储个人用户信息 ```java @WebServlet(“/a”) public class a extends HttpsServlet{ req.setCharacterEncoding(“utf-8”); resp.setContentType(“text/html;charset=utf-8”); req.setAttribute(“name”, “root”); // 数据存储 req.getRequestDispatcher(“/b”).forward(req, resp); // 会话转发 }

@WebServlet(“/b”) public class b extends HttpsServlet{ // 获取数据并发送给客户端 resp.getWriter().print( (String)req.getAttribute(“name”) ); }

  1. - ServletRequest
  2. - 一次请求
  3. - 转发数据共享和传递
  4. - PageContext
  5. - 单个servletservice内生效
  6. - 范围太小不适用
  7. <a name="EoIjU"></a>
  8. ### 2. session
  9. - 概念
  10. - 会话级别的存储技术,存储在服务器端
  11. - 没有数据存储的要求[Object],没有数据存储大小限制
  12. - 用于登录账号处理、支出超时、验证码存储等
  13. - 存储原理
  14. - 获取原理
  15. <a name="OSkII"></a>
  16. ### 3. cookie
  17. - 概念
  18. - 会话级别的数据存储技术,存储在客户端浏览器中
  19. - 键值对形式并且只有字符串类型,大小限制默认2kb
  20. - 每次请求都会携带cookie,可用于无密识别请求的身份
  21. - 存储原理
  22. - cookie的数据通过响应头(set-cookie)携带保存在浏览器中
  23. - 获取原理
  24. - 客户在每次请求中都会将项目下的cookie放到请求头中,传给服务器端
  25. - cookie中的domainpath
  26. - domainpath控制cookie是否加入请求头中
  27. - domain是项目的主机地址
  28. - 通过修改domain可实现跨服务器共享(微服务)
  29. - path是项目的路径地址
  30. ```java
  31. // 创建cookie
  32. Cookie cookie = new Cookie("user", "root");
  33. // 遍历所有cookie数据
  34. for(Cookie cookie : cookies){
  35. System.out.println(cookie.getName()+" : "+cookie.getValue())
  36. }
  37. // 设置cookie有效时间
  38. cookie.setMaxAge(int second);
  39. // 默认:一次会话有效(浏览器关闭后释放)
  40. // 七天有效:7*24*60*60
  41. // 携带一个或多个cookie回客户端
  42. resp.addCookie(cookie);