当前位置: 代码迷 >> Web前端 >> session机制深入懂得
  详细解决方案

session机制深入懂得

热度:142   发布时间:2012-11-01 11:11:32.0
session机制深入理解

?

1、什么是session

?

???Session对象表示目前个别用户的会话状态,用来识别每个用户。session对象用于存储用户的会话信息。用户在应用程序的web页面之间跳转时,存储在session对象中的变量不会丢失,而是在整个用户会话过程中保存下去。

?

2、为什么使用session呢?

?

???http协议是一个无状态协议,每个客户机请求被当成独立的事物。简单来说就是,web服务器是不知道现在连接上来的人到底是哪个人,为了满足选择性发送信息的需求,在http的基础上做了很多扩展来达到这个目的,如数字签名cookiesessionsession可以保存用户的相关登陆资料等信息。跳转页面的时候服务能根据session的值来判断用户是否登陆,判断用户的权限和其它相关信息等。session在登陆页面中使用,相关于充当了1临时身份证的作用。

?

3、Session对象常用到的方法:

	//获取session对象
			HttpSession session = request.getSession(true);
			//在session中存储信息;将用户的信息设置为session对象的属性
			session.setAttribute("loginState", "OK");
			//获取session中的值
			session.getAttribute("loginState");
			//移除session中的值
			session.removeAttribute("loginState");
			//销毁session
			session.invalidate();
			//操作会话时间
			session.setMaxInactiveInterval(1200);//单位为s
			session.getMaxInactiveInterval();
			//判断是否有新的session
			session.isNew();
			//获取sessionID
			session.getId();
			//获取session创建时间
			session.getCreationTime();
			//获取session最后一次访问时间
			session.getLastAccessedTime();

??1) getAttribute方法用于获取session作用域里指定属性的值,该值是一个Object了性

?? ?public Object getAttribute(String name)//name 获得session属性的名称

?2)setAttribute方法用于设置值到指定属性当中

??? public void setAttribute(String name,Object value)

??? name:指定设置session属性的名称

??? value:绑定session属性的name值,该值是一个对象。

?3)removeAttribute方法用于移除当前session对象中的属性

???

4、session的作用范围:

?

?? 作用域是一个用户会话范围,从session第一次创建到session因超时(一般为30分钟)或者客户端关闭之前,数据会一直存在。session保持时间通常可以通过setMaxUInactiveInterval(lastTime)函数来确定,也可以通过配置web.xml文件来确定:

?? <session-config>

???? <session-timeout>10</session-timeout>

?

?

?

????? </session-config>

?

5、session工作流程机制:

?

???? 当一个客户首次方位服务器上的一个jsp或者servlet时,JSP引擎会产生一个session对象,同时分配一个String类型的ID号(即SessionID),JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户端就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配新的session对象,直到客户浏览器关闭,服务器端的该session对象才取消,并且和客户端的会话关系对应取消。

???? 通过eclipse的Debug可以很清晰的看到session的工作机制。

  相关解决方案