天天看點

初識ServletContext(域對象),ServletContext的配置方式以及常用方法

ServletContext介紹

  • ServletContext 是應用上下文對象。每一個應用中隻有一個 ServletContext 對象。
  • 作用:可以獲得應用的全局初始化參數和達到 Servlet 之間的資料共享。
  • 生命周期:應用一加載則建立,應用被停止則銷毀。
    • 出生——活着——死亡
    • 出生: 應用一加載,該對象就被建立出來了。一個應用隻有一個執行個體對象。(Servlet和ServletContext都是單例的)
    • 活着:隻要應用一直提供服務,該對象就一直存在。
    • 死亡:應用被解除安裝(或者伺服器挂了),該對象消亡。

域對象概念

  • 域對象指的是對象有作用域。也就是有作用範圍
  • 域對象可以實作資料的共享
  • 不同作用範圍的域對象,共享資料的能力也不一樣
  • 在 Servlet 規範中,一共有 4 個域對象
    • ServletContext 就是其中的一個
    • 它也是 web 應用中最大的作用域,也叫 application 域
    • 它可以實作整個應用之間的資料共享

ServletContext的配置方式

  • ServletContext 并不屬于某個 Servlet 的配置,而是針對于整個應用的配置,也叫全局的初始化參數
  • <web-app>

    标簽中,通過

    <context-param>

    标簽來配置。有兩個子标簽
  • <param-name>

    :代表全局初始化參數的 key
  • <param-value>

    :代表全局初始化參數的 value
  • 代碼展示:
    package com.lichee.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class ServletContextDemo extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
               
  • 配置Servlet,并且配置ServletContext
    <!--配置Servlet-->
    <servlet>
        <servlet-name>servletContextDemo</servlet-name>
        <servlet-class>com.lichee.servlet.ServletContextDemo</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletContextDemo</servlet-name>
        <url-pattern>/servletContextDemo</url-pattern>
    </servlet-mapping>
    
    <!--配置ServletContext-->
    <context-param>
        <param-name>globalEncoding</param-name>
        <param-value>UTF-8</param-value>
    </context-param>
    <context-param>
        <param-name>globalDesc</param-name>
        <param-value>This is ServletContext</param-value>
    </context-param>
               
    • 注意ServletContext的配置是在wep-app節點下,與servlet配置同級别

ServletContext的常用方法

  • 常用方法
    傳回值 方法名 說明
    String getInitParameter(String name) 根據名稱擷取全局配置的參數
    String getContextPath() 擷取目前應用的虛拟通路目錄
    String getRealPath(string path) 根據虛拟目錄擷取應用部署的磁盤絕對路徑
    void setAttribute(String name,Object value) 向應用域對象中存儲資料
    Object getAttribute(String name) 通過名稱擷取應用域對象中的資料
    void removeAttribute(String name) 通過名稱移除應用域對象中的資料

繼續閱讀