会话技术 cookie & session

 一、会话技术

   1、什么是会话技术:从打开一个浏览器访问某个网站,到关闭这个浏览器的过程,成为一次会话,

              会话技术就是记录这次会话中客户端的状态和数据的。

   2、会话技术分为cookie和session:

              cookie :将数据存储在客户端本地,减少服务器端的存储压力,但是安全性不好,客户端可以清除cookie           

             session:将数据存储到服务器,相对安全,但是会增加服务器的压力

            

二、cookie 技术

        1. 创建cookie对象

                  Cookie cookie = new Cookie("name","666"); //cookie里面要传两个string类型参数,并且不能是中文

        2. 设置cookie在客户端的持久化时间

                cookie.setMaxAge(66);        //里面是秒

               如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭 cookie信息销毁,

                如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里一直到时间过期被销毁

        3.设置cookie携带路径

                  cookie.setPath(String path); // 参数是路径

              如果不设置携带路径,那么该cookie信息会在访问产生该cookie的web资源所在的路径都携带cookie信息

                      cookie.setPath("/test");

                    代表访问test应用中的任何资源都携带cookie

                    cookie.setPath("/test/cookie");

                     代表访问test项目中的cookie时才携带cookie信息

       4. 以文件头的形式将cookie中存的数据发送到客户端        // set-cookie:"name=666"

                 response.addCookie(cookie);      

       5.删除客户端cookie(如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时间为0的cookie进行覆盖)

      6.服务器端怎么接受客户端携带的Cookie

              通过request.getCookie(); 获取所有的cookie,

              Cookie []  cookie = request.getCookie();  //Cookie对象数组

               遍历cookie数组,通过名称设置的cookie名称得到值

              for(Cookie cookieObj:cookie){

                if( "name".equal(cookieObj.getName())){   // 和name进行比较,是否是同一个cookie

                         String cookieValue =  cookieObj.getValue();  //获取刚刚上面定义的cookie name值

                  }

                

               }

三、session技术

       session 技术是将数据存储在服务端的技术,会为每个客户端创建一个内存空间用来存储客户端数据,客户端每次都要带一个标识ID去服务器找属于自己的内存空间。session需要借助cookie存储客户端的唯一标示JSESSIONID

      1.获得session 对象

          HttpSession session = request.getSession(); // 此方法会获得属于当前会话的session对象,如果说当前session对象不存在,他自己会创建 一个新的session对象返回。(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在    session了)

       2.怎样向session存取数据

               session对象也具有如下三个方法:                     

                       session.setAttribute(String name,Object obj);  //向session中存数据

                       session.getAttribute(String name);                  //向session中取数据

                       session.removeAttribute(String name);         //移除数据

       3.Session对象的生命周期

                  创建: 第一次执行reques.getSession()时候;

                  销毁:

                          a.   服务器(非正常)关闭时

                          b.  session过期/失效(默认30分钟)

                            (时间的起算点 从何时开始计算30分钟?) =》从不操作服务器端的资源开始计时

                             可以在工程的web.xml中进行配置session过期时间

                                 <session-config>

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

                                 <session-config>

                           c.手动销毁session():    session.invalidate();

作用范围:一次会话中所有的资源共用一个session对象

猜你喜欢

转载自blog.csdn.net/qq_38726370/article/details/84105360
今日推荐