【web基础】状态管理——session

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LoveHYZH/article/details/79337339

1.什么是session

  • 将数据保存在服务器端的技术 当浏览器向服务器发送请求时,服务器会先创建session对象 (该对象有一个唯一的sessionId),服务器会将sessionId以set-cookie消息头的方法发送给浏览器,浏览器会将sessionId保存下来,当再次向服务器发送请求时,浏览器会将sessionId 以cookie消息头的方式发送给服务器,服务器根据sessionId找到对应的session对象,通过这种方式,可以实现状态管理。

2.获取session

  • 方式一
    HttpSession session = request.getSession(boolean flag);
    • flag=true
      服务器会先检查请求数据包中是否包含sessionId,如果没有,则创建session对象,如果有sessionId,服务器会 根据sessionId的值查找对应的session对象,如果找到,返回session,找不到,则创建新的session对象。
    • flag=false
      服务器会先检查请求数据包中是否包含sessionId,如果没有,返回null,如果有,根据sessionId查找对应的session对象,找到则返回,找不到,返回null
  • 方式二
    HttpSession session = request.getSession();

3.常用方法

//获得sessionId
String session.getId();   

//绑定一个对象到session对象上
//name:绑定名   value:绑定值
session.setAttribute(String name,Object obj);

//获得绑定对象,如果不存在,返回null
Object session.getAttribute(String name);

//解除绑订
session.removeAttribute(String name);

4.session超时

  • 服务器会将空闲时间过长的session对象删除掉
  • 服务器缺省的时间限制一般是30分钟,,在web.xml中配置:
<session-config>
    <session-timeout>30</session-timeout>
</session-config>
  • session.setMaxInactiveInterval(int seconds);

5.删除session

  • session.invalidate();

6.URL重写

  • 用户禁止掉cookie之后,浏览器不再保存sessionId的值,如果还想继续使用session,需要通过编程的方式跟踪sessionId的值,发送请求地址。
  • 如何URL重写
    • 一般链接,表单
      response.encodeURL(“地址”);
    • 重定向
      response.encodeRedirectURL(“地址”);
    • 转发不需要
  • 重写后会多出JSESSIONID,其实就是sessionid

猜你喜欢

转载自blog.csdn.net/LoveHYZH/article/details/79337339
今日推荐