• session会话机制


    一、会话机制定义:

    1. 用户打开浏览器,进行一系列操作,然后最终将浏览器关闭,这个整个过程叫做一次会话。会话在服务器端也有一个对应的java对象,这个java对象叫做:session。
    2. 一个会话中包含多次请求。
    3. 在java的servlet规范当中,session对应的类名:HttpSession(jarkata.servlet.http.HttpSession)
    4. session对象最主要的作用是:保存会话状态。(用户登录成功了,这个是一种登录成功的状态,你怎么把登录成功的状态一直保存下来呢?使用session对象可以保留会话状态。)
    5. request请求域(HttpServletRequest)请求级别的、session会话域(HttpSession)用户级别的、application应用域(ServletContext)项目级别的,所有用户数据共享
    6. 三种域的范围比较:request

    二、session的实现原理:

    在这里插入图片描述

    1. sessionID以cookie形式保存在浏览器内存中。
    2. 正常情况服务器创建session对象后发送cookie给浏览器,浏览器记住这个id用于获取session。
    3. cookie禁用后,服务器正常发送cookie给浏览器,但是浏览器不要了,拒收了。并不是服务器不发了。

    三、设置session对象自动销毁时间:

    <session-config>
        <session-timeout>30session-timeout>
    session-config>
    
    • 1
    • 2
    • 3

    四、session用法:

    1. 某些网页的内容需要用户登录后才能查看,为了防止用户不登录就查看网页内容(即直接输出要查看网页的URL),需要在用户的会话中加入session。只要用户不登录,就会被拦截在登录页面,后续页面也将无法查看。
      实现:
      (1)首先在登录成功的servlet代码中加入session.setAttribute("username",request.getParameter("username"));,给登陆成功的用户创建session对象。
      (2)然后把用户输入的信息添加到会话域中。
      (3)然后在后续页面的servlet中加入if语句,if(session != null && session.getAttribute("username") != null),如果用户没有创建session且session中的"username"为空,则response.sendRedirect(request.getContextPath()+"/index.jsp");重定向到登录界面。如果if为true,,则正常执行相关servlet代码。
    2. 用于用户点击退出登录按钮后清空cookie,提示用户需要重新登陆。
      实现:
      (1)获取session对象:HttpSession session = request.getSession(false);
      (2)判断session是否为空:if (session != null)
      (3)不为空销毁session:session.invalidate();//手动销毁session

    五、访问JSP时会自动创建session:

    因为JSP文件编译后的java代码中有一个变量就是session,即JSP会自动创建一个session,这个session会影响我们判断是否是用户登录成功后创建的session。
    在这里插入图片描述

    • 解决方法:
      方法一:<%page session="false"%>这样访问JSP的时候JSP就不会自动创建session了。不建议用这种方式
      方法二:上述if语句中加入session.getAttribute("username") != null,因为JSP自动创建的session中是没有“username”这个属性的,这个属性是用户登录成功后才传进session会话域的。
  • 相关阅读:
    递推递归与排列组合
    Codeforces Round #712 (Div. 1) A. Balance the Bits
    云服务仿真:完全模拟 AWS 服务的本地体验 | 开源日报 No.45
    搭建SpringBoot工程步骤
    C++ 内存模型
    Cesium 展示——移除已加载的geojson文件效果
    国产CAE软件(流体、结构仿真、优化、数据建模)免费线上培训课程报名通知
    Webpack使用plugin插件自动在打包目录生成html文件
    WeChat Subscribers Lite - 微信公众订阅号自动回复WordPress插件
    高性能无线综合测试仪 无线电综合测试仪 ---TFN PM5100 100KHz-1GHz
  • 原文地址:https://blog.csdn.net/m0_53881899/article/details/126440290