zoukankan      html  css  js  c++  java
  • java学习day32-Servlet上下文--ServletContext

    Servlet上下文

    Servlet上下文有叫做: ServletContext, 一个WEB应用只有一个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服务器启动时创建,服务器停止时销毁。

  • 相关阅读:
    You are not late! You are not early!
    在同一个服务器(同一个IP)为不同域名绑定的免费SSL证书
    Vue.js Is Good, but Is It Better Than Angular or React?
    It was not possible to find any compatible framework version
    VS增加插件 Supercharger破解教程
    Git使用ssh key
    Disconnected: No supported authentication methods available (server sent: publickey)
    VS 2013打开.edmx文件时报类型转换异常
    asp.net MVC4 框架揭秘 读书笔记系列3
    asp.net MVC4 框架揭秘 读书笔记系列2
  • 原文地址:https://www.cnblogs.com/liqbk/p/13126250.html
Copyright © 2011-2022 走看看