初识 JSP---(Session机制)

Session机制

Session:在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。

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

服务器端首先应该判断SessionID,如果有SessionID,就证明session创建如果没有SessionID,证明还没有创建Session

会话的生命周期

1.什么时候创建HttpSession对象

浏览器访问任何JSP和Servlet页面,服务会立即创建Session对象吗?

答:不一定

若当前JSP(servlet)是客户端访问的当前web应用的第一个资源,且JSP的page指定的session 属性值为false。则服务器就不会为JSP创建一个session对象了

若当前JSP页面不是客户端访问的当前web应用的第一个资源页面,且其他页面已经创建一个HTTPSession对象,则当前JSP页面返回一个会话的HttpSession对象,而不会创建一个新的httpSession对象

对于servlet而言:若servlet是客户端访问的第一个web资源,则只用调用request.getSession方法或request.getSession(true)才会创建Session对象

2.什么时候销毁

1.直接调用HTTPSession的invalidate方法:该方法使httpSession失效

2.服务器卸载web项目

3.超过httpSession的过期时间   

      设置session.setMaxInactiveInterval(5);单位为秒

      在web.xml文件配置session过期时间

并不是关闭浏览器就销毁HttpSeesion

当时间 > 1800 时,则销毁HttpSeesion

HttpSession:

HttpSession是java web对用户进行会话跟踪的一个接口

HttpSession由Servlet容器的提供者实现

HttpSession通过HttpServletRequst的getSession()或getSession(boolean)方法获取

getSession(): 如果会话没有被创建则创建并返回,若创建则返回已有的session对象

getSession(boolean): 如果参数是false,如果会话存在则返回,否则返回null

例:

Session中的方法

• String getId() 返回包含分配给此会话的唯一标识符的字符串

• void invalidate() 使会话无效,然后取消对任何绑定到它的对象的绑定

• void removeAttribute(String name) 从此会话中移除不指定名称绑定在一起的对象

• void setAttribute(String name, Object value) 使用指定名称将对象绑定到此会话

• Object getAttribute(String name) 返回不此会话中的指定名称绑定在一起的对象

• void setMaxInactiveInterval(int interval) 指定在servlet容器使此会话失效之前客户端请求之间的时间间隔。负数时间指示会话永进不会超时(以秒为单位,默认为1800秒)

• int getMaxInactiveInterval() 返回servlet容器在客户端访问之间将使此会话保持打开状态的最大时间间隔

• ServletContext getServletContext() 返回此会话的ServletContext

• boolean isNew() 如果客户端还不知道该会话,或者客户端选择丌加入该会话,则返回true。例如,如果服务器仅使用基于Cookie的会话,而客户端已经禁止了Cookie的使用,则每个请求上的会话都将是新会话

在xml配置中配置session过期时间(以分钟为单位)

猜你喜欢

转载自blog.csdn.net/jianghao233/article/details/81358866