Session,也称会话状态,Servlet提供了一个HttpSession接口来支持会话状态的维持。Session的发明是为了填补HTTP协议的局限。HTTP协议是如何工作的--用户发出请求,服务器作出响应,这种用户端和服务器端的联系就是离散的,非连续的。HTTP协议不能提供允许服务器跟踪用户请求的功能。在服务器端完成响应用户的请求之后,服务器不能继续与该浏览器继续保持连接。从服务器这端来看,每一个请求都是独立的,因此HTTP协议被认为是无状态协议,当用户在多个主页间切换时,服务器无法知道的身份。 Session的出现就是为了弥补这个局限。利用Session,您就可以当一个用户在多个主页间切换的时候也能保存他的信息。这样很多以前根本无法去做的事情就变得简单多了。
在访问者从到达某个特定的主页到离开为止的那段时间,每个访问者都会单独获得一个Session。
以上引自:http://www.blogjava.net/gdws/archive/2010/07/02/325039.html
接下来具体说说Session中一些需要注意的地方:
1.客户端和服务器有对应的SessionID
2.客户端向服务器端发送SessionID的时候两种方式:实现方法:response.encodeURL(request.getRequestURL().toString())
如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户端打开cookie
3.Session不象Cookie拥有路径访问的问题,同一个application下的servlet/jsp可以共享同一个session, 前提示同一个客户端窗口.
request中关于session的主要方法:
HttpSession session = request.getSession(true);
getSession(boolean isNew):如果会话已经存在,则返回一个HttpSession,如果不存在并且isNew为true,则会新建一个HttpSession
isRequestedSessionIdValid():如果客户端的会话ID代表的是有效会话,则返回true。否则(比如,会话过期或根本不存在),返回false
HttpSession的常用方法:
getAttributeNames()
getAttribute()
getCreateTime()setMaxInactivateInterval()