Servlet第五章、第六章知识点总结——Web应用程序状态管理、对象作用域
知识点预览
Web状态管理概述
状态管理解决方案-隐藏字段
Cookie
Session
URL重写
Cookie原理
1.Web状态管理概述
a) HTTP协议使用的是无状态的连接
b) 对容器而言,每一个请求都来自于一个新的客户
2.状态管理解决方案-隐藏字段:
i. <input type=”hidden” name=”session” value=”...”>
3.Cookie
4.Session
5.URL重写
6.Cookie原理
a) 服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端
b) Servlet中提供了如下一系列操作Cookie的API
i. Cookie(name, value):构造方法用于创建一个或多个Cookie
ii. setMaxAge(int lifetime):设置Cookie的过期时间(以秒为单位)。默认值为负值(Cookie将在浏览器关闭时过期)
iii. getMaxAge():获取Cookie的过期时间。
iv. setName(String cookieName):设置Cookie的名字
v. getName():获取Cookie的名字
vi. setValue(String value):指定Cookie的值。
vii. getValue():获取Cookie的值
c) 在Servlet中使用Cookie
i. 要将Cookie发送到客户端,Servlet应该按照下列的操作步骤执行:
1. 创建一个或多个Cookie,使用构造方法指定Cookie的名字和值
2. 使用setXXX方法为Cookie设置可选属性
3. 使用HttpServletResponse对象的addCookie()方法将Cookie插入到响应头中
ii. 要读取客户端传入的Cookie,Servlet执行下列操作步骤:
1. 使用HttpServletRequest对象的getCookies方法返回一个Cookie对象数组
2. Servlet遍历该数组(调用getName()方法),直到找到与名称相匹配的Cookie值
d) Session原理
i. 务器可以为客户端创建并维护一个Session对象,用于存放数据。
ii. 在创建Session对象的同时,服务器将会为该 Session对象产生一个唯一编号,这个编号称之为SessionID
iii. 服务器以Cookie的方式将SessionID存放在客户端。
iv. 当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问(信物)
e) Session会话跟踪机制
f) HttpSession接口常用的一些方法
i. setAttribute(java.lang.String, java.lang.Object):在Session对象中用一个名字绑定一个对象。
ii. getAttribute(java.lang.String):通过名字获取Session对象中保存的对象。
iii. removeAttribute(java.lang.String):在Session中删除与一个名字对应的对象。
iv. getCreationTime():返回第一次创建会话的时间。
v. getLastAccessedTime():返回容器最后一次得到该会话ID的请求时间。
vi. setMaxInactiveInterval(int interval):对于会话指定客户请求的最大间隔时间,以秒为单位。-1表示永不过期
vii. getMaxInactiveInterval(int interval):返回客户请求的最大间隔时间。
viii. invalidate():会话结束,当前存在在会话中的所有会话属性也会解除绑定。
ix. getId():此方法返回每个session唯一的标识
g) 会话超时管理
i. 销毁会话可以采用如下三种简单的方式
ii. 设置会话超时。
iii. 在Session对象上调用invalidate()方法。
iv. 应用结束(崩溃或取消部署)
v. 在web.xml文件中配置
vi.
h) URL重写
i. Session对象的正常使用要依赖于Cookie
ii. URL地址重写能够取得置于Cookie中的会话,并把会话ID附加到访问应用的各个URL最后
1. URL重写方法:
2. response.encodeURL()