1. 程式人生 > 實用技巧 >Servlet-ServletContext類

Servlet-ServletContext類

ServletContext

一、什麼是ServletContext

1、ServletContext是一個介面,它表示Servlet上下文物件

2、一個web工程只有一個ServletContext物件例項

3、ServletContext物件是一個域物件

4、ServletContext例項在web工程部署啟動時建立,在web工程停止時銷燬

二、什麼是域物件?

域物件,是可以像map一樣存取資料的物件,叫做域物件。

這裡的域指的是存取資料的操作範圍,整個web工程

存資料 取資料 刪除資料

Map put() get() remove()

域物件 setAttribute() getAttribute() removeAttribute()

三、ServletContext四個作用

1.獲取xml中配置的上下文引數context-param

2.獲取當前工程路徑,格式:/工程路徑

3.獲取工程部署後在伺服器硬碟上的絕對路徑

4.像map一樣存取資料

相關程式碼

package com.orzjiangxiaoyu.context.servlet;

import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; /** * ServletContext * 什麼是ServletContext * 1、ServletContext是一個介面,它表示Servlet上下文物件 * 2、一個web工程只有一個ServletContext物件例項 * 3、ServletContext物件是一個域物件 * 4、ServletContext例項在web工程部署啟動時建立,在web工程停止時銷燬 * * 什麼是域物件? * 域物件,是可以像map一樣存取資料的物件,叫做域物件。 * 這裡的域指的是存取資料的操作範圍,整個web工程 * * 存資料 取資料 刪除資料 * Map put() get() remove() * 域物件 setAttribute() getAttribute() removeAttribute() * * * ServletContext四個作用 * 1.獲取xml中配置的上下文引數context-param:getInitParameter(String var1) * 2.獲取當前工程路徑,格式:/工程路徑:getContextPath() * 3.獲取工程部署後在伺服器硬碟上的絕對路徑:getRealPath("/"); * 4.像map一樣存取資料 * * *
@author orz * @create 2020-09-10 16:11 */ public class ContextServlet1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //一、獲取ServletContext //方法一:常使用 ServletContext servletContext = getServletContext(); System.out.println("ServletContext:"+servletContext); //方法二: ServletConfig servletConfig = getServletConfig(); ServletContext servletContext1 = servletConfig.getServletContext(); System.out.println("ServletContext:"+servletContext); //二、四個作用 // 1.獲取xml中配置的上下文引數context-param //String getInitParameter(String var1); // <!-- context-param是上下文引數 --> // <context-param> // <param-name>username</param-name> // <param-value>orzjiangxiaoyu</param-value> // </context-param> // <context-param> // <param-name>password</param-name> // <param-value>root</param-value> // </context-param> System.out.println("username:"+servletContext.getInitParameter("username")); System.out.println("password:"+servletContext.getInitParameter("password")); // 2.獲取當前工程路徑,格式:/工程路徑 //String getContextPath() System.out.println("當前工程路徑:"+servletContext.getContextPath()); // 3.獲取工程部署後在伺服器硬碟上的絕對路徑 //String getRealPath(String var1); // 斜槓/ 表示被伺服器解析地址為http://ip:port/工程名稱/ // 對映到idea程式碼的web目錄 System.out.println("絕對路徑:"+servletContext.getRealPath("/")); // 4.像map一樣存取資料 } }
View Code
package com.orzjiangxiaoyu.context.servlet;

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**ServletContext四個作用之一像map一樣存取資料
 *
 * 什麼是域物件?
 * 域物件,是可以像map一樣存取資料的物件,叫做域物件。
 * 這裡的域指的是存取資料的操作範圍,整個web工程
 *
 * 存資料            取資料       刪除資料
 * Map                put()                  get()             remove()
 * 域物件            setAttribute()        getAttribute()        removeAttribute()
 *
 * @author orz
 * @create 2020-09-10 16:32
 */
public class Context1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        ServletContext servletContext = getServletContext();

        System.out.println("Context1未儲存之前 key=key1,value="+servletContext.getAttribute("key1"));

        System.out.println("Context1儲存");
        servletContext.setAttribute("key1","value1");
        System.out.println("Context1儲存之後 key=key1,value="+servletContext.getAttribute("key1"));

        servletContext.setAttribute("key2","value2");
        System.out.println("Context1未刪除前 key=key2,value="+servletContext.getAttribute("key2"));
        servletContext.removeAttribute("key2");
        System.out.println("Context2刪除後 key=key2,value="+servletContext.getAttribute("key2"));
        //

        //

    }
}
View Code
package com.orzjiangxiaoyu.context.servlet;

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * 這裡的域指的是存取資料的操作範圍,整個web工程
 * @author orz
 * @create 2020-09-10 16:33
 */
public class Context2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = getServletContext();
        System.out.println("Context2 key=key1 value="+servletContext.getAttribute("key1"));
    }
}
View Code

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- context-param是上下文引數   -->
    <context-param>
        <param-name>username</param-name>
        <param-value>orzjiangxiaoyu</param-value>
    </context-param>
    <context-param>
        <param-name>password</param-name>
        <param-value>root</param-value>
    </context-param>

    <servlet>
        <servlet-name>ContextServlet</servlet-name>
        <servlet-class>com.orzjiangxiaoyu.context.servlet.ContextServlet1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ContextServlet</servlet-name>
        <url-pattern>/contextServlet</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>Context1</servlet-name>
        <servlet-class>com.orzjiangxiaoyu.context.servlet.Context1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Context1</servlet-name>
        <url-pattern>/context1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Context2</servlet-name>
        <servlet-class>com.orzjiangxiaoyu.context.servlet.Context2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Context2</servlet-name>
        <url-pattern>/context2</url-pattern>
    </servlet-mapping>
</web-app>
View Code