JavaWeb:Session的规范和细节

Session的操作:

1:创建和获取Session对象.

HttpSession session = request.getSession(true);

如果当前请求中存在一个Session对象,就直接返回,如果不存在Session对象,就先创建一个再返回。

HttpSession session = request.getSession(false);

如果当前请求中存在一个Session对象,就直接返回,如果不存在Session对象,就返回null。

HttpSession session = request.getSession();

等价于HttpSession session = request.getSession(true);

2:往Session中存储数据.

Session对象.setAttribute(String name, Object value);

3:从 Session中取出数据.

Object value = Session对象.getAttribute(String value);

4:删除Session(用户注销登录).

     a:删除Session中指定属性名的值。             

Session对象.removeAttribute("currentName");

     b:销毁Session对象(Session中所有的属性都不存在)。

Session对象.invalidate();

5:Session的超时管理:

       在超时时间之内,如果客户端和服务端没有交互(用户的两次操作之间不能超过该时间),则自动销毁Session。

Session对象.setMaxInactiveInterval(60 * 10); // 超过10分钟,销毁Session

       Tomcat服务器的默认超时时间为:30分钟

6:URL重写

        Session是一种特殊的Cookie,而浏览器可以禁用Cookie。

        此时需要在每一个资源之后,手动地携带Session的ID。

        /session/list;jessionid=872870F9466CE7B3A11FD3B768FDD684

String url = response.encodeURL("/session/list");// 自动地在资源之后拼接;jessionid=872870F9466CE7B3A11FD3B768FDD684

注意:开发中都不会取消接收Cookie的。

Session的细节:

1:一般的,我们存储到Session中的属性名称要唯一,习惯用XXX_IN_SESSION

Session对象.setAttribute("USER_IN_SESSION", "Jack");

2:若需要把多个数据存放到Session中,就得调用setAttribute方法N次。

      一般的,我们把需要存储的数据,封装成一个对象,然后再存储到Session中。

      把用户的信息封装到User对象。  

Session对象.setAttribute("USER_IN_SESSION", User对象);

3:如果多服务器之间需要共享Session,此时Session中的对象,必须实现java.io.Serializable接口(才能在网络上传输)。

      序列化:把对象信息存储为二进制。

      反序列化:把二进制信息恢复成对象。

public class User implements java.io.Serializable {...}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值