JavaWeb ServletContext基礎(chǔ)與應(yīng)用詳細(xì)講解
ServletContext 基礎(chǔ)知識(shí)
獲取 ServletContext對(duì)象
有兩種方式可以獲?。?/p>
- 使用 servletconfig 對(duì)象獲取
- 使用 servlet 上下文獲取
// 第一種方式 ServletContext app1 = config.getServletContext(); writer.println("<br>" + app1); // 第二種方式 ServletContext app2 = this.getServletContext(); writer.println("<br>" + app2);
特性
- 一個(gè) webapp 只存在一個(gè) ServletContext 對(duì)象
- ServletContext 對(duì)象是由 web 服務(wù)器啟動(dòng)時(shí)創(chuàng)建
- ServletContext 是一個(gè)接口,他依然遵循 servlet 規(guī)范
- ServletContext 在 web 服務(wù)器銷毀時(shí)才會(huì)銷毀
- ServletContext 存儲(chǔ)了 整個(gè) web.xml 的信息
context-param
和 servletconfig 一樣,他也可以獲取與 web.xml 中定義的參數(shù);
只不過 ServletContext
定義的參數(shù)是寫在 servlet 標(biāo)簽外面的;
每一個(gè) context-param
都代表一個(gè) key-value;
如果需要多個(gè)參數(shù)就必須要 分別寫 context-param
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" version="5.0"> <!-- 定義了兩個(gè)外部參數(shù) --> <context-param> <param-name>pageSize</param-name> <param-value>10</param-value> </context-param> <context-param> <param-name>porkPrice</param-name> <param-value>999</param-value> </context-param> ... </web-app>
同樣的,我們可以使用 Enumeration
獲取所有的 context-param
,然后再使用迭代器的方法一次獲取其中的 key
和 value
package com.zhiyiyi.javaweb.servlet; import jakarta.servlet.*; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; public class AServlet extends GenericServlet { @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { servletResponse.setContentType("text/html"); PrintWriter writer = servletResponse.getWriter(); ServletContext servletContext = this.getServletContext(); // 迭代輸出param-name和param-value Enumeration<String> initParameterNames = servletContext.getInitParameterNames(); while (initParameterNames.hasMoreElements()) { String key = initParameterNames.nextElement(); String value = servletContext.getInitParameter(key); writer.println(key + " " + value + "<br>"); } } }
可見,context-param 定義的是 webapp 內(nèi)共享的配置信息,而 servlet-name 更適用于僅供單個(gè) servlet 使用
獲取文件路徑
獲取根路徑,即我們配置 web 服務(wù)器時(shí)設(shè)置的路徑
// 獲取web的根路徑 String contextPath = servletContext.getContextPath(); writer.println("<br>" + contextPath);
獲取指定文件的絕對(duì)路徑;
getRealPath 接收一個(gè)路徑作為參數(shù),這個(gè)路徑的起始點(diǎn)是 web 文件夾,下方代碼指的是 web/index.html
這個(gè)文件
注意注意!getRealPath 的參數(shù)別帶上根目錄路徑!??!
// 獲取絕對(duì)路徑 String realPath = servletContext.getRealPath("/index.html"); writer.println("<br>" + realPath);
記錄日志
可以使用 log 方法記錄日志;
日志保存位置為 tomcat 根目錄下/logs
servletContext.log("hellowrodl");
參數(shù)增刪改查
我們可以直接在 servlet 中直接對(duì) context-param
進(jìn)行增添、查找、刪除?。?!
// 以鍵值對(duì)的方式添加參數(shù) servletContext.setAttribute("name","tom"); // 獲取參數(shù) Object name = servletContext.getAttribute("name"); // 刪除參數(shù) servletContext.removeAttribute("name");
到此這篇關(guān)于JavaWeb ServletContext基礎(chǔ)與應(yīng)用詳細(xì)講解的文章就介紹到這了,更多相關(guān)JavaWeb ServletContext內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springBoot2.6.2自動(dòng)裝配之注解源碼解析
對(duì)于springboot個(gè)人認(rèn)為它就是整合了各種組件,然后提供對(duì)應(yīng)的自動(dòng)裝配和啟動(dòng)器(starter),基于這個(gè)流程去實(shí)現(xiàn)一個(gè)定義的裝配組件,下面這篇文章主要給大家介紹了關(guān)于springBoot2.6.2自動(dòng)裝配之注解源碼解析的相關(guān)資料,需要的朋友可以參考下2022-01-01Java構(gòu)造器(構(gòu)造方法)與方法區(qū)別說明
這篇文章主要介紹了Java構(gòu)造器(構(gòu)造方法)與方法區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09java如何自動(dòng)補(bǔ)齊數(shù)值至指定位數(shù)
這篇文章主要介紹了java如何自動(dòng)補(bǔ)齊數(shù)值至指定位數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Java實(shí)現(xiàn)IP地址到二進(jìn)制的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)IP地址到二進(jìn)制的轉(zhuǎn)換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11