标签:
会话的基础知识
主要内容包括:
1、会话是什么?
2、会话能干什么?
3、会话和ServletContext共享数据的比较
-------------------------------------------------------------------------------------------------
会话管理(HttpSession)
引入会话管理:
大家都知道HTTP协议是无状态的,每个请求和响应信息的链接都是独立的,从一个请求到另一个请求(同一个用户),HTTP服务器会忘记以前的请求,那么现在想要让服务器能够保持用户的数据,记得以前的请求信息,该怎么办呢?
(比如: 一个网站的登录功能,在用户输入账号和密码登录以后,在接下来的一段时间内该网上就应该记住用户的信息,用户在网站上的其他操作都不需要再次就行登录了, 如果该网上不能保存用户的登录信息,让用户每个操作都需要登录一次的话,估计用户会疯掉)
引入解决办法:
会话(HttpSession)就是用来解决上述问题的.
会话是什么?
会话是在服务器端为客户端保存数据的一种技术. Web容器可为每个用户保存一个"会话对象"
在服务器端保存数据 ---> 意味着会话会在服务器端开辟新的内存空间来存储数据 ---> Session池 ---> 里面放置为客户端存放数据的session对象
会话的特点:
与客户端一一对应(第一个客户端只能访问session1,各个session之间不能交叉)
如下图:
HttpSession是跟客户端对应的,一个客户端对应一个Session,那么客户端又该如何去区分呢?
客户端软件的一个进程代表了一个客户端(比如: 一个IE浏览器表示一个客户端,在同一台机器上,开着两个IE算作不同的客户端,从一个IE窗口弹出的IE窗口,还是算作一个客户端)
会话能干什么?
HttpSession在服务器端为客户端保存数据
会话和ServletContext共享数据的比较--画图
客户端1能够访问所有的 servlet, 但是客户端1只能够用过servlet去访问session1
客户端2能够访问所有的servlet,但是客户端2只能够通过servlet访问session2
说明了:
1、多个servlet之间可以通过session来共享数据
2、会话不区分servlet,但是区分客户端,不同的客户端访问的是不同的session
下图:
客户端1、客户端2能够访问全部的servlet,可以通过servlet来访问servletContext
说明:
1、多个servlet之间可以通过servletContext来共享数据
2、servletContext不区分servlet,也不区分客户端
会话有什么?
HttpSession接口:
getID() : String
isNew() : boolean
getAttribute(name) : Object
setAttribute(name,value)
removeAttribute(name)
Servlet可通过HttpServletRequest访问会话对象,可以在会话对象中存储及访问任意数据的对象
HttpServletRequest接口:
getSession(create :boolean)
getSession()
会话的基本使用
获取HttpSession对象
HttpSession session = request.getSession();
存储会话属性
session.setAttribute("test","java");
访问会话属性
String name = (String)session.getAttribute("test");
销毁会话
在部署描述符控制所有会话的生命周期
<session-config>
<session-timeout>10</session-timeout>
</session-config>
标签:
原文地址:http://www.cnblogs.com/xinhuaxuan/p/5437407.html