zoukankan      html  css  js  c++  java
  • 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无处存放):

    【更新】:Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但为什么禁用Cookie就不能得到Session呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。

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

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

    四、session解决重复提交的问题(利用token)

        见孤傲苍狼大神的博客!

        http://www.cnblogs.com/xdp-gacl/p/3859416.html

  • 相关阅读:
    Btrace
    ThreadPoolExecutor线程池参数设置技巧
    工具篇-NotePad++/JSON格式化
    springcloud-- Alibaba-nacos--支持的几种服务消费方式
    @RequestParam和@RequestBody的区别
    Excel 2013如何判断单元格里是否包含某个字符
    redis 通配符批量删除key
    字节真题 ZJ26-异或:使用字典树代替暴力破解降低时间复杂度
    约瑟夫环问题解决方法时间复杂度分析
    九字真言
  • 原文地址:https://www.cnblogs.com/jiangbei/p/6683406.html
Copyright © 2011-2022 走看看