二、SESSION1、Session 简介 客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap Session 弥补了 HTTP 无状态特性,服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录 为了防止服务器端的session过多导致内存溢出,web服务器默认会给每个session设置一个有效期, (30分钟)若有效期内客户端没有访问过该session,服务器就认为该客户端已离线并删除该session Session 原理服务器第一次接收到请求时,开辟了一块 Session 空间(创建了Session对象),同时生成一个 sessionId ,并通过响应头的 Set-Cookie:JSESSIONID=XXXXXXX 命令,向客户端发送要求设置 Cookie 的响应 客户端收到响应后,在本机客户端设置了一个 JSESSIONID=XXXXXXX 的 Cookie 信息,该 Cookie 的过期时间为浏览器会话结束 接下来客户端每次向同一个网站发送请求时,请求头都会带上该 Cookie信息(包含 sessionId ), 然后,服务器通过读取请求头中的 Cookie 信息,获取名称为 JSESSIONID 的值,得到此次请求的 sessionId
保存sessionID的方式2、Session 读写常用APIgetId()方法:得到sessionid invalidate()方法:让session立刻失效 getAttribute(String key):根据key获取该session中的value setAttribute(String key,Object value):往session中存放key-value removeAttribute(Stringkey):根据key删除session中的key-value getServletContext():得到ServletContext setMaxInactiveInterval(long timeout)/getMaxInactiveInterval:设置/获取session的最大有效时间 getCreationTime方法:获取session的创建的时间 getLastAccessedTime方法:获取session最后一次访问的时间 getSession():从HttpServletRequest中获取session
一个模板 |