zoukankan      html  css  js  c++  java
  • ServletContext接口

    概述

    1、 Servletcontext 对象称为全局作用域对象。来自于 servlet 规范中一个接口(在 Tomcat 中存在 servlet-api.jar ),在 Tomcat 中负责提供这个接口实现类。
    2、如果两个 servlet 来自于同一个网站。彼此之间通过网站的 ServletContext 实例对象实现数据共享
    3、 ServletContext 是一个接口,它表示 Servlet 上下文对象(可以和程序的容器(服务器)来通信)。
    4、一个web工程,只有一个ServletContext对象实例。
    5、 ServletContext 是在 web 工程部署启动的时候创建,在 web 工程停止的时候销毁
    在这里插入图片描述
    6、 ServletContext 对象是一个域对象
    参考链接

    域对象

    1、域对象:就是类似于 Map ,可以在里面存取数据,叫域对象。
    2、域对象的范围:指的是存取数据的操作范围。
    3、 ServletContext 范围:整个 Web 工程。

    获取 ServletContext 对象

    通过 ServletConfig 获取
    ServletContext servletContext = getServletConfig().getServletContext();
    
    通过 ServletRequest 及其子类获取
    //强转成 ServletRequest 获取
    ServletRequest req = (ServletRequest)request;
    ServletContext servletContext = req.getServletContext();
    //通过 HttpServletRequest 获取
    ServletContext application = request.getServletContext();
    
    通过 getServletContext() 方法获取

    直接调用该方法,其实是 GenericServlet 类中的方法,其本质还是通过 ServletConfig 对象获取。

    ServletContext servletContext = getServletContext();
    
    域对象:存取数据

    (1)setAttribute(String name,Object value); 存储数据
    (2)getAttribute(String name); 获取数据

    ServletContext application = request.getServletContext();
    //根据数据类型进行强转
    Object 数据 = (Object) application.getAttribute("key");
    

    (3)removeAttribute(String name); 移除数据
    ServletContent 对象范围:所有用户所有请求的数据(remove谨慎使用)

    代码示例

    xml:/one

    public class OneServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1、通过请求对象向Tomcat索要当前网站全局作用域对象
            ServletContext application = request.getServletContext();
            //2、将数据添加到全局作用域对象,作为共享数据
            application.setAttribute("key1", 100);
        }
    }
    

    xml:/two

    public class TwoServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //1、通过请求对象向Tomcat索要当前网站全局作用域对象
            ServletContext application = request.getServletContext();
            //2、从全局作用域对象得到指定关键字对应的值
            Integer num = (Integer) application.getAttribute("key1");
            System.out.println(num);
            //使用Integer而不用int是为了避免空指针异常
        }
    }
    

    先访问/one,保存数据。
    在这里插入图片描述
    访问/two,获取数据。
    在这里插入图片描述

  • 相关阅读:
    [转]xna 3.1 to xna 4.0
    office 2010 激活信息查看
    Windows 8 Release Preview下载地址
    常用书籍推荐与下载地址
    禁用Windows7脱机文件的方法
    [转]DEM数据和影像数据下载汇总
    打工是最愚蠢的投资——李嘉诚在深圳大梅沙演讲
    j截图Code
    BYTE与_int64转换
    英语中of和for用法有什么区别?
  • 原文地址:https://www.cnblogs.com/yu011/p/13793587.html
Copyright © 2011-2022 走看看