requester、会话技术Cookie&Session

一、Request

1、requeste的生命周期:

     创建:访问时创建

     销毁:响应结束

     域的作用范围:一次请求中

2、转发和重定向的区别(详情请点击https://www.jianshu.com/p/68988b42d21d

     (1)重定向两次请求,转发一次。

     (2)重定向地址栏变化,转发地址栏不变化

     (3)重定向可以访问外部资源,转发只能访问内部资源

3、用request.getParameter(“parameter_name“) 来取得参数时,如果不存在 parameter_name 这个参数,request.getParameter ()将返回 null

二、会话技术

一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会话技术就是记录这次会话中客户端的状态与数据的。

会话技术分为Cookie和Session:

1、Cookie:存储在客户端。

      (1)cookie分为会话级别的cookie和持久化cookie。会话级别cookie存储在浏览器的内存中,用户关掉浏览器,本次会话结束,那么cookie就会消失。持久化cookie存储在浏览器的磁盘文件中,关闭浏览器再打开会存在,持久化cookie用cookie.setMaxAge(seconds);方法。

      (2)cookie 是服务器创建并传输给客户端,创建用Cookie cookie = new Cookie(name,value);

发送给客户端用:response.addCookie(cookie);

      (3)服务器端获取来自客户端的cookie:Cookie []  cookies = request.getCookies();

2、Session:将数据存储到服务器端。

Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间 存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客 户的唯一性标识JSESSIONID.

     (1)session对象的生命周期:服务器创建session开始,到服务器异常关闭,或者session过期或者手动销毁session为止。

session默认存在30分钟,session过期是指用户无操作30分钟之后session不存在,他的过期时间可以修改。手动销毁session的方法:session.invalidate();

     (2)获得Session对象:HttpSession session = request.getSession();如果服务器中已经有该客户端的session,就会获取这个session,否则会创建一个新的session。服务器端怎么知道这个session是这个客户端的呢,靠的是jsessionID,而jsessionid是服务器创建session时创建的,要发送给客户端,这就要依靠cookie,所以说Session的实现是基于Cookie。那么问题来了,如果服务器把jsessionid发送给客户端之后,客户端关闭了浏览器,那么cookie就不存在了,那再次访问的时候session也就不存在了,所以可以把cookie持久化,这样再次访问就不会出现session没了的问题了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章