Servlet-ServletContext類
阿新 • • 發佈:2020-09-10
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;View Codeimport 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一樣存取資料 } }
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