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ù);
只不過(guò) 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>");
}
}
}
可見(jiàn),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-01
Java構(gòu)造器(構(gòu)造方法)與方法區(qū)別說(shuō)明
這篇文章主要介紹了Java構(gòu)造器(構(gòu)造方法)與方法區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
java如何自動(dòng)補(bǔ)齊數(shù)值至指定位數(shù)
這篇文章主要介紹了java如何自動(dòng)補(bǔ)齊數(shù)值至指定位數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Java實(shí)現(xiàn)IP地址到二進(jìn)制的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)IP地址到二進(jìn)制的轉(zhuǎn)換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11

