首页 > 代码库 > JavaWeb基础—会话管理之Session

JavaWeb基础—会话管理之Session

一、什么是session

  session类似于客户端在服务器端的账户。使用Map存放

  一个会话锁定一个用户(一般情况下是一个客户端,即一个浏览器独占一个session对象),即使使用浏览器访问其他程序资源,也可以共享这个session

  (如何确定是同一个用户?创建session时把sessionID以cookie的形式传给客户端,客户端访问时再把此sessionID传过去进行校验

JSESSIONID

)

二、session和cookie的区别

  cookie 把用户的数据保存到浏览器端,session 把用户的数据保存到服务器端

  cookie保存在浏览器不安全(cookie欺骗),但可以减轻服务器压力

  session保存在服务器端更安全,但增大了服务器压力

  浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB

  一般把登陆密码等重要信息放session 其它相对不太重要的信息放cookie

 

  补更:

  Cookie是浏览器实现的一种数据存储功能

  session 字面意思就是会话,会话就要知道你在和谁说话,session也是类似的道理,服务器要知道当前发请求给自己的是谁

三、session的操作

  request.getSession()方法得到session 在这个方法第一次调用时才真正创建session(可以通过isNew()方法判断是否为新的)

  默认session的存活时间为30分钟,可以在web.xml中配置过期时间

 <session-config>
       <session-timeout>15</session-timeout>
 </session-config>
  
程序中使用session.invalidate()手动设置过期

 

  cookie被禁用时的解决方案(cookie被禁用后JSESSIONID无处存放):

    解决方案:URL重写
      response. encodeRedirectURL(String url) 
      用于对sendRedirect方法后的url地址进行重写。
      response. encodeURL(String url)
      用于对表单action和超链接的url地址进行重写 

    这两个都是比较智能的方法,会在合适的时机进行重写

JavaWeb基础—会话管理之Session