zoukankan      html  css  js  c++  java
  • Servlet上下文

    Servlet上下文

    Servlet上下文有叫做: ServletContext, 一个WEB应用只有一个ServletContext

    jsp中的application对象实质上就是ServletContext上下文的对象

    上下文特点

    1. 当WEB服务器启动时,会为每一个WEB应用程序创建一块共享的存储区域。

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

    3. ServletContext在WEB服务器启动时创建,服务器关闭时销毁。

    获取上下文对象

    再servlet类中:

    ServletContext context = this.getServletContext(); // 获取上下文对象
    // context.setAttribute(<String>, <Object>); // 往上下文中存数据
    // context.removeAttribute(<String>); // 删除上下文中的某一个数据
    

    存入的数据整个WEB应用的任何servlet都能获取到, 关闭web服务器的时候失效

    代码示例

    AServlet类 (Servlet类)

    @WebServlet(name = "AServlet", value = "/a")
    public class AServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            	throws ServletException, IOException {
            doGet(request, response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            	throws ServletException, IOException {
            // 获取上下文对象
            ServletContext context = this.getServletContext();
            String name = "jack";
            // 存入一个数据
            context.setAttribute("name", name);
        }
    }
    

    BServlet类 (Servlet类)

    @WebServlet(name = "BServlet", value = "/b")
    public class BServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            	throws ServletException, IOException {
            doGet(request, response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            	throws ServletException, IOException {
            // 获取上下文对象
            ServletContext context = this.getServletContext();
            // 获取上下文中的数据
            String name = (String) context.getAttribute("name");
            response.getWriter().write(name);
        }
    }
    

    浏览器先访问 /a, 然后访问 /b 浏览器显示:

    jack
    

    上下文和Session的区别

    • 作用范围不同

      HttpSession是针对每一个客户端浏览器单独有一个。

      ServletContext是针对每一个WEB应用程序有一个

    • 存活时间不同:

      HttpSession第一次访问服务器时创建,session超时后销毁(默认无响应30分钟后)

      ServletContext服务器启动时创建,服务器停止时销毁。

  • 相关阅读:
    Response.Redirect引起的性能问题分析
    Html5中 视频 音频标签 进度条问题
    GIS 地理坐标分类
    函数指针理解最透彻的文章
    python安装第三方包之后无法导入相应模块(一个容易忽略的bug)
    git使用入门
    OpenSSL中HMAC,MD5以及对称加密算法的应用
    OpenSSL库中加密组件使用的相关链接
    Ubuntu 12.04LTS下配置OpenSSL和gmp环境
    编程写作注意事项!
  • 原文地址:https://www.cnblogs.com/zpKang/p/13124874.html
Copyright © 2011-2022 走看看