zoukankan      html  css  js  c++  java
  • WEB程序会话管理--HttpSession和Cookie

    WEB应用的会话管理的原理:

            由于WEB应用的请求和响应是基于HTTP的,而HTTP由属于无状态的通信协议,只能记录本次请求的信息,因此服务器不会记住这一次的请求和下一次请求的关系。所以会话管理的原理:在下一次请求之前,主动将要维持的信息告知给服务器,使得WEB应用程序可以得知请求之间的关联。

         主要的实现方式:

           1、隐藏域的使用;

           2、Cookie的使用;

           3、URL的重写

          其中1和3比较简单,也是大家最常用的,目的很简单,就是告诉服务器他应该记住的东西,免得他老人家忘了啊。

          现在主要说一下Cookie:      --->常见的应用场景是:自动登录的

          Cookie是浏览器保存信息的一种方式,可以理解为一个文件,保存到客户端了啊,服务器可以通过响应浏览器的set-cookie的标头,得到Cookie的信息。你可以给这个文件设置一个期限,这个期限呢,不会因为浏览器的关闭而消失啊。其实大家应该对这个效果不陌生,很多购物网站都是这个做的,即使你没有买东西,他也记住了你的喜好,现在回来,会优先给你提交你喜欢的东西啊,他们也真是煞费苦心了啊。

         Cookie的操作:

          添加Cookie

           Cookie cookie = new Cookie("user", "suntao");
           cookie.setMaxAge(7*24*60*60);     // 一星期有效
           response.addCookie(cookie);

          获取Cookie

          // 因为取得的是整个网页作用域的Cookie的值,所以得到的是个数组
      Cookie[] cookies = request.getCookies();
      
       for(int i = 0 ; i < cookies.length ; i++){
             String name = cookies[i].getName() ;
              String value = cookies[i].getValue() ;
        }

    HttpSession 会话机制    -->Servlet的会话机制的实现

     |-- 通过HttpServletRequest.getSession 进行获得HttpSession对象,通过setAttribute()给会话赋值,可以通过invalidate()将其失效。

     |--每一个HttpSession有一个唯一的标识SessionID,只要同一次打开的浏览器通过request获取到session都是同一个。

     |--WEB容器默认的是用Cookie机制保存SessionID到客户端,并将此Cookie设置为关闭浏览器失效,Cookie名称为:JSESSIONID

     |--每次请求通过读取Cookie中的SessionID获取相对应的Session会话

     |--HttpSession的数据保存在服务器端,所以不要保存数据量耗资源很大的数据资源,必要时可以将属性移除或者设置为失效

     |--HttpSession可以通过setMaxInactiveInterval()设置失效时间(秒)或者在web.xml中配置

         <session-config>

                  <!--单位:分钟-->

                <session-timeout>30</session-timeout>

    </session-config>

    !HttpSession默认使用Cookie进行保存SessionID,当客户端禁用了Cookie之后,可以通过URL重写的方式进行实现。

       可以通过response.encodeURL(url)  进行实现

       API对encodeURL的结束为,当浏览器支持Cookie时,url不做任何处理;当浏览器不支持Cookie的时候,将会重写URL将SessionID拼接到访问地址后。

  • 相关阅读:
    UVA12125 March of the Penguins (最大流+拆点)
    UVA 1317 Concert Hall Scheduling(最小费用最大流)
    UVA10249 The Grand Dinner(最大流)
    UVA1349 Optimal Bus Route Design(KM最佳完美匹配)
    UVA1212 Duopoly(最大流最小割)
    UVA1395 Slim Span(kruskal)
    UVA1045 The Great Wall Game(二分图最佳匹配)
    UVA12168 Cat vs. Dog( 二分图最大独立集)
    hdu3488Tour(KM最佳完美匹配)
    UVA1345 Jamie's Contact Groups(最大流+二分)
  • 原文地址:https://www.cnblogs.com/xiaotao726/p/4713265.html
Copyright © 2011-2022 走看看