Http session

来源:互联网 发布:ubuntu查看当前目录 编辑:程序博客网 时间:2024/06/04 18:48

session在WEB环境下是指

一类用来在客户端与服务器端之间保持状态的解决方案

有时候Session也用来指这种解决方案的存储结构

Session机制采用的是在服务器端保持HTTP状态信息的方案

服务器使用一种散列表的结构(也可能就是使用散列表)来保存信息

服务器响应(set-cookie)JSESSIONID给客户端

session通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的

默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,称之为session cookie

用来区别 persistent cookies(也就是我们所说的cookie)

session cookie是存储于浏览器内存中,并不是写到硬盘上的

HttpSession生命周期

1.什么时候创建HttpSession对象

是否浏览器访问服务端的任何一个JSP,服务器都会立即创建一个HttpSession对象?

不一定

对于JSP:

1)若当前的JSP是客户端访问当前WEB应用的第一个资源,且JSP的page指定的session属性值为false,

则服务器就不会为JSP创建一个HttpSession对象。

2)若当前的JSP不是客户端访问当前WEB应用的第一个资源,且其他页面已经创建一个HttpSession对象

则服务器也不会为当前JSP页面创建一个HttpSession对象,而会返回一个与会话相关联的那个HttpSession对象返回给当前JSP页面。

对于Servlet

1)若Servlet是客户端访问的第一个WEB应用,

则只有调用了request.getSession()或request.getSession(true)才会创建HttpSession对象


session=“false"表示当前页面禁用session隐含变量,但可以使用其他的显示HttpSession对象


在Servlet中如何获取HttpSession对象?

request.getSession(boolean create) create为false,若没有和当前JSP页面关联的HttpSession对象

则返回null,若有则返回true。若create为true,一定返回一个HttpSession对象,若没有和当前JSP页面关联的HttpSession对象

则服务器创建一个新的HttpSession对象。若有则直接返回关联的。

request.getSession()等同于request.getSession(true)


2.什么时候销毁HttpSession对象

1)直接调用HttpSession的invalidate()方法

2)服务器卸载了当前WEB应用(关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效)

3)超出HttpSession的过期时间(默认是1800秒)

     a.可以在web.xml中设置单位为分钟

     b.session.setMaxInactiveInterval(5)单位为秒

URL重写

response.encodeRedirectURL(paramString);


0 0
原创粉丝点击