文章目录
1. Cookie的常用方法
Cookie中提供了以下常用方法用来获取Cookie中的信息:
方法名称 | 功能说明 |
---|---|
void setMaxAge(int expiry) | 设置以秒计的cookie的最大存活时间 |
int getMaxAge() | 返回cookie的最大存活时间,以秒计算,在缺省情况下,-1表示该cookie将一致持续到浏览器shutdown为止 |
String getName() | 返回cookie的名称 |
void setValue(String newValue) | 在一个cookie创建之后,给其分配一个新的值。 |
String getValue() | 返回cookie的取值 |
String getPath() | 返回服务器上浏览器返回cookie的路径 |
void setPath(String path) | 设置cookie的访问路径 |
2. cookie的分类
如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie;存储在浏览器的内存中,用户退出浏览器之后被删除。
若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。
- setMaxAge()设置值>0,将cookie存储于本地磁盘,超过cookie的有效期后,将被删除
- setMaxAge()设置值<0,浏览器默认将cookie保存在内存里,当浏览器关闭时cookie从内存中释放,这种情况下,只要浏览器不关,cookie就会一直存在
- setMaxAge()设置值=0,立即删除cookie
会话Cookie:
不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
持久Cookie:
设置了过期时间,浏览器就会把cookie保存到硬盘上,其不会随浏览器的关闭而消失,除非用户手工清理或到了过期时间,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
3. cookie的限制
- Cookie可以被用户禁止
- Cookie会将状态保存在浏览器端,不安全。对于敏感数据,需要加密后再使用Cookie来保存
- Cookie只能保存少量的数据,大约4Kb左右
- Cookie的个数是有限制的
- Cookie只能保存字符串
4. HttpSession接口的常用方法
方法名称 | 方法作用 |
---|---|
void setAttribute(String name, Object value) | 用指定的名字将一个对象绑定到一个会话 |
Object getAttribute(String name) | 返回在本会话中绑定了指定名字的对象,当没有所要求的对象时,返回—个空值 |
Enumeration getAttributeNames() | 返回一个包含所有的绑定到会话的对象名称的字符串对象的集合 |
String getld() | 返回一个包含分配给会话的唯一的标示符的字符串 |
int getMaxInactivelnterval() | 返回servlet容器将在两个客户端访问之间保持会话开放的间隔的最大时间,以秒计时 |
void removeAttribute(String name) | 从会话中删除绑定到指定名字的对象。 |
void setMaxInactiveInterval(int interval) | 指定在客户端请求消息之间servlet容器将该会话设为无效之前的以秒计的时间 |
5. 设置Session的有效时间
- tomcat服务器的conf/web.xml文件配置session的超时时间,单位为分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
- 在当前的web应用的web.xml文件中配置session的超时时间,会覆盖tomcat服务器的web.xml文件中的配置,单位为分钟
- 在servletljsp代码中配置,单位为秒:
session.setMaxlnactivelnterval(120);
6. HttpSession对象将在以下情况被销毁
- 直接调用HttpSession中的invalidate()方法;
- 超出了session的最大有效时间;
- 服务器卸载了当前的WEB应用;
7. cookie禁用时session失效的问题
通过URL重写
使用url重写的形式来跟踪到session对象,把session id附加在URL路径的后面将会话标识号以参数形式附加在超链接的URL地址后面的技术称为URL重写。
写法:
public java.lang.String encodeURL(java.lang.String url)