Javaweb之会话技术

会话技术

会话:一次会话中包含多次请求和响应
        一次会话:浏览器第一次给服务器资源发送请求,会话建立,只到有一方结束为止
功能:在一次会话的多次请求间共享数据
方式

  • 客户端会话技术:cookie
  • 服务器端会话技术:session

cookie

cookie
1.概念:客户端会话技术,要求数据保存到客户端
2.快速入门
    使用步骤
        1.创建cookie对象绑定数据new Cookie(String name,String value);
        2.发送cookie对象resp.addCookie(Cookie cookie);
        3.获取cookies数据 req.getCookies();
代码实现

 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       resp.setCharacterEncoding("utf-8");
       Cookie c=new Cookie("luo1","11");
       Cookie c1=new Cookie("luo2","22");
       Cookie c2=new Cookie("luo3","333");
       resp.addCookie(c);
       resp.addCookie(c1);
       resp.addCookie(c2);
  protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       Cookie[] cookies = req.getCookies();
       for(Cookie c:cookies)
       {
           System.out.println(c);
           String name = c.getName();//名字
           String value = c.getValue();//值
           System.out.println(name+" "+value);
       }
   }

cookie常见细节
1.一次可不可以发送多个cookie?可以(见上例)
2.cookie在浏览器中保存的时间
        在默认情况下,浏览器关闭后cookie数据自动销毁
        持久化存储
                正数:cookie数据将持久化存储在硬盘中,正数大小为存活时间大小
                负数:默认值
                0:删除cookie信息

3.cookie能否存中文
         Tomcat8之前不支持,Tomcat8之后支持但不支持特殊编码
4.cookie获取范围
Cookie特点和作用

  1. Cookie存储的客户端浏览器
  2. 浏览器对单个Cookie大小有限制(64k),对同一域名下Cookie大小也有限制(20个)
    作用:
    Cookie一般用于存储少量不敏感的数据
    在不登录的情况下完成服务器对客户端的身份识别

session

session
1.概念:服务器会话技术,在一次会话的多次请求中获取数据,将数据保存到对象中
2.快速入门
      1.获取HttpSession对象
      HttpSession session = req.getSession();
      2.使用HttpSession对象
      void setAttribute(String name,Object value)
      Object getAttribute(String name)
      void removeAttribute(String name)

//设置
 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       HttpSession session = req.getSession();
       session.setAttribute("msg","你好吗");

   }
//获取
 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       HttpSession session = req.getSession();
       String msg =(String) session.getAttribute("msg");

       System.out.println(msg);
   }

细节
1.当客户端关闭,服务器端不关闭两次获取的Session是否一样?
默认下不是(session用于本次会话)
如果需要相同设置Cookie,键为JSESSIONID,设置最大存活时间

 Cookie cookie = new Cookie("JSSIONID",session.getId());
       cookie.setMaxAge(60*60);
       resp.addCookie(cookie);

2.当客户端不关闭,服务器端关闭两次获取是Session是否一样?
不是同一个,但要确保数据不丢失
     Session的钝化:在服务器关闭之前将对象系列化到硬盘上
     Session的活化:在服务器启动后将Session文件转化为内存中的Session对象即可(Session的钝化和活化不能用idea执行,最好本地启动和关闭服务器)
3.Session的什么时候销毁

  1. 服务器被关闭
  2. Session对象调用invalidate();
  3. Session默认失效时间30分钟

Session的特点
1.Session用于存储一次会话的多次请求数据,存的服务器内
2.Session可以存储任意类型任意大小的数据
Session与Cookie区别
Session存在服务器端而Cookie存在客户端
session没有数据大小而cookie有
session数据安全性比cookie数据安全性高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值