Cookie与Session的常用方法

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的限制

  1. Cookie可以被用户禁止
  2. Cookie会将状态保存在浏览器端,不安全。对于敏感数据,需要加密后再使用Cookie来保存
  3. Cookie只能保存少量的数据,大约4Kb左右
  4. Cookie的个数是有限制的
  5. 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的有效时间

  1. tomcat服务器的conf/web.xml文件配置session的超时时间,单位为分钟
 <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
  1. 在当前的web应用的web.xml文件中配置session的超时时间,会覆盖tomcat服务器的web.xml文件中的配置,单位为分钟
  2. 在servletljsp代码中配置,单位为秒:
    session.setMaxlnactivelnterval(120);

6. HttpSession对象将在以下情况被销毁

  1. 直接调用HttpSession中的invalidate()方法;
  2. 超出了session的最大有效时间;
  3. 服务器卸载了当前的WEB应用;

7. cookie禁用时session失效的问题

通过URL重写
使用url重写的形式来跟踪到session对象,把session id附加在URL路径的后面将会话标识号以参数形式附加在超链接的URL地址后面的技术称为URL重写。
写法:
public java.lang.String encodeURL(java.lang.String url)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigSmartDing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值