• Servlet中重要对象详解(ServletContext,HttpSession等)


    ServletContext

    什么是Servlet上下文?

      Servlet上下文又叫做:ServletContext。容器启动之后,容器会为每个web应用创建一个实现了ServletContext接口要求的对象,该对象就称之为servlet上下文。

      当WEB服务器启动时,会为每一个WEB应用程序(webapps下的每个目录就是一个应用程序)创建一块共享的存储区域。

      ServletContext也叫做“公共区域”,也就是同一个WEB应用程序中,所有的Servlet和JSP都可以共享同一个区域。

    ServletContext特点:

      1、ServletContext生命周期:在WEB服务器启动时创建,服务器关闭时销毁。

      2、唯一性,一个web应用对应一个servlet上下文

      3、一直存在,只要容器没有关闭,应用没有被卸载,servlet上下文就会一直存在。

    如何获取Servlet上下文?

      GenericServlet,ServletConfig,HttpSession,FilterConfig都提供了一个方法getServletContext()来获得Servlet上下文。

      //通过当前Servlet类的对象,得到与它关联的ServletContext对象,也就是上下文
          ServletContext application = this.getServletContext();

    ServletContext上下文作用:

      1、绑定数据

        setAttribute,removeAttribute,getAttribute在满足使用条件情况下,优先使用生命周期短的(request<session<ServletContext)

      2、读取全局的初始化参数

        首先在web.xml中这么配置

        <!-- 配置全局的初始化参数 -->
        <context-param>
          <param-name>company</param-name>
          <param-value>网易雷火游戏</param-value>
        </context-param>
     
     
    HttpSession(私有区域) 与 ServletContext(公共区域) 的区别是什么?
    1、作用范围不同:HttpSession是针对每一个客户端浏览器单独有一个。
             ServletContext是针对每一个WEB应用程序有一个
    2、存活时间不同:HttpSession第一次访问服务器,服务器端调用request.getSession()时创建,访问间隔时间超过30分钟就销毁。
             ServletContext服务器启动时创建,服务器停止时销毁。
     
     
     
     
    HttpSession  
    什么是HttpSession?
      服务器端为保存状态而创建的一个特殊的对象。
     
    HttpSession的原理:
      浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的ID,一般称之为sessionId),服务器会将这个sessionId发送给浏览器(默认以cookie方式发送),浏览器会将sessionId保存下来(在内存中);当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId找到对应的session对象。
     
    如何获取HttpSession?
      HttpSession s=request.getSession(boolean flag)
        flag为true时,先查看请求当中有没有sessionId,若没有,则创建session对象;若有,则依据该sessionId去查找对应的session对象(找到就返回,找不到就创建一个新的session对象)
        flag为false时,先查看请求当中有没有sessionId,若没有,不创建session对象;若有,则依据该sessionId去查找对应的session对象(找到就返回,找不到就返回null)
        flag为空时,HttpSession s=request.getSession()等价于上面参数为true时

     HttpSession何时被创建,何时被销毁呢?

    创建:第一次请求服务器,服务器端的Servlet调用了 request.getSession()方法时被创建。

    销毁:如果浏览器间隔时间超过30分钟没有访问服务器,则服务器会销毁对应的HttpSession对象。(默认30分钟是可以配置的。)

    <session-config>
      <session-timeout>30</session-timeout>
    </session-config>
      
      
     
     


    作者:danielJinyu

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,请在文章页面明显位置给出原文连接
    Github:https://github.com/DanielJinyu

  • 相关阅读:
    VC 常见问题百问
    python windows 环境变量
    Check server headers and verify HTTP Status Codes
    Where are the AES 256bit cipher suites? Please someone help
    outlook 如何预订会议和会议室
    安装Axis2的eclipse插件后,未出现界面
    windows 环境变量
    python 时间日期处理汇集
    openldap学习笔记(使用openldap2.3.32)
    set p4 environment in windows
  • 原文地址:https://www.cnblogs.com/danielJinyu/p/11364056.html
Copyright © 2020-2023  润新知