zoukankan      html  css  js  c++  java
  • ServletContext (上下文对象)

    一、什么是ServletContext

    • ServletContext代表是一个web应用的上下文对象(web应用对象)
    • 里面封装的都是web应用信息
    • 一个ServletContext对应一个应用

    二、ServletContext的生命周期

    • 在服务器一启动的时候就会创建
    • 在服务器关闭的时候销毁

    三、如何获得上下文

    • 通过init方法当中一个参数ServletConfig来获取
    public void init(ServletConfig config) throws ServletException {
        System.out.println(config);
        ServletContext context = config.getServletContext();
        System.out.println(context);
    }
    
    /** 运行结果
      * org.apache.catalina.core.StandardWrapperFacade@3e478880
      * org.apache.catalina.core.ApplicationContextFacade@24391b1e
      */
    
    • 直接在HttpServlet当中获取
      • this.getServletContext
      • 这种方法本质还是通过config来去获取的

    四、获取全局的初始化参数

    初始化参数不能再某一个Servlet当中来去配置。在最外层来去配置

    获取全局初始化参数

    五、获得Web应用中某一个资源的绝对路径

    各文件的结构

    获取 WebContent 下的文件

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String realPatha = context.getRealPath("a.txt");
        System.out.println(realPatha);
        String realPathb = context.getRealPath("WEB-INF/b.txt");
        System.out.println(realPathb);
    }
    

    获取 Java Resources 下的文件

    • 方法一:和获取 WebContent 下的文件一样,先获取根目录,然后拼接。
    • 方法二:通过类加载器获取字节码目录
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
    
        String pathc = one.class.getClassLoader().getResource("c.txt").getPath();
        System.out.println(pathc);
        // 解决路径中 空格显示为 %20
        pathc = URLDecoder.decode(pathc, "utf-8");
        System.out.println(pathc);
    
        String pathd = one.class.getClassLoader().getResource("com/xzh/servlet/d.txt").getPath();
        pathd = URLDecoder.decode(pathd, "utf-8");
        System.out.println(pathd);
    
        String pathe = one.class.getClassLoader().getResource("e.txt").getPath();
        pathe = URLDecoder.decode(pathe, "utf-8");
        System.out.println(pathe);
    }
    

    六、ServletContext是一个域对象

    • 域 :能够存储数据。
    • 域对象 :能够存取数据数据就的对象。

    ServletContext域对象的作用范围:

    • 整个web应用,所有的web资源都可以进行存取数据
    • 数据是可以共享的

    获取完ServletContext之后向里面写数据

    context.setAttribute(String name,Object value);
    

    获取完ServletContext之后,通过name取出存放的数据

    context.getAttribute(String name);
    

    获取完ServletContext之后,删除指定名称的值

    Context.removeAttribute(String name);
    

    只要是一个域对象上,基本上里面都有这几个方法

  • 相关阅读:
    while练习
    运算符
    作业
    [新手必看] 17个常见的Python运行时错误
    作业
    day04
    作业
    算法模板——线段树2(区间加+区间乘+区间求和)
    1798: [Ahoi2009]Seq 维护序列seq
    1708: [Usaco2007 Oct]Money奶牛的硬币
  • 原文地址:https://www.cnblogs.com/xzh0717/p/10638870.html
Copyright © 2011-2022 走看看