zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    知识图谱系列---机器学习---PIL图片处理
    知识图谱系列---知识图谱概论(摘录)
    Java系列整理---Python Java Scala 区别
    Java系列整理---Intellij IDEA 封装Jar包(提示错误: 找不到或无法加载主类)
    数据库系列整理---数据库访问优化法则
    hadoop系列整理---Spark基础架构(摘录)
    知识图谱系列---自然语言处理---Word2Vec超详细的原理推导(摘录)
    知识图谱系列---自然语言处理---词向量模型(word2vec) 详解
    知识积累---性能优化与框架搭建
    知识积累---Linux内核的整体架构
  • 原文地址:https://www.cnblogs.com/danielJinyu/p/11364056.html
Copyright © 2011-2022 走看看