?
1、什么是session?
?
???Session对象表示目前个别用户的会话状态,用来识别每个用户。session对象用于存储用户的会话信息。用户在应用程序的web页面之间跳转时,存储在session对象中的变量不会丢失,而是在整个用户会话过程中保存下去。
?
2、为什么使用session呢?
?
???http协议是一个无状态协议,每个客户机请求被当成独立的事物。简单来说就是,web服务器是不知道现在连接上来的人到底是哪个人,为了满足选择性发送信息的需求,在http的基础上做了很多扩展来达到这个目的,如数字签名、cookie、session等。session可以保存用户的相关登陆资料等信息。跳转页面的时候,服务能根据session的值来判断用户是否登陆,判断用户的权限和其它相关信息等。session在登陆页面中使用,相关于充当了1个临时身份证的作用。
?
3、Session对象常用到的方法:
??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对象
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();
?
????? </session-config>
?
5、session工作流程机制:
?
???? 当一个客户首次方位服务器上的一个jsp或者servlet时,JSP引擎会产生一个session对象,同时分配一个String类型的ID号(即SessionID),JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户端就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配新的session对象,直到客户浏览器关闭,服务器端的该session对象才取消,并且和客户端的会话关系对应取消。
???? 通过eclipse的Debug可以很清晰的看到session的工作机制。