最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWeb ServletContext基礎(chǔ)與應(yīng)用詳細(xì)講解

 更新時(shí)間:2023年01月05日 10:36:30   作者:知奕奕  
ServletConfig對(duì)象,叫Servlet配置對(duì)象。主要用于加載配置文件的初始化參數(shù)。我們知道一個(gè)Web應(yīng)用里面可以有多個(gè)servlet,如果現(xiàn)在有一份數(shù)據(jù)需要傳給所有的servlet使用,那么我們就可以使用ServletContext對(duì)象了

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,然后再使用迭代器的方法一次獲取其中的 keyvalue

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)文章

  • java中匿名內(nèi)部類詳解

    java中匿名內(nèi)部類詳解

    這篇文章主要對(duì)java中的匿名內(nèi)部類的詳細(xì)總結(jié),需要的朋友可以參考下
    2017-04-04
  • Mybatis分頁插件PageHelper配置及使用方法詳解

    Mybatis分頁插件PageHelper配置及使用方法詳解

    這篇文章主要介紹了Mybatis分頁插件PageHelper配置及使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • IDEA連接postgressql數(shù)據(jù)庫操作

    IDEA連接postgressql數(shù)據(jù)庫操作

    這篇文章主要介紹了IDEA連接postgressql數(shù)據(jù)庫操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java實(shí)現(xiàn)萬年歷效果

    Java實(shí)現(xiàn)萬年歷效果

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)萬年歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java中關(guān)于線程安全的三種解決方式

    Java中關(guān)于線程安全的三種解決方式

    這篇文章主要介紹了Java中關(guān)于線程安全的三種解決方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Spring web集成rabbitmq代碼實(shí)例

    Spring web集成rabbitmq代碼實(shí)例

    這篇文章主要介紹了Spring web集成rabbitmq代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java SpringBoot高級(jí)用法詳解

    Java SpringBoot高級(jí)用法詳解

    這篇文章主要為大家詳細(xì)介紹了Java Spring Boot的一些高級(jí)用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-09-09
  • Spring全局懶加載的優(yōu)劣及使用方法詳解

    Spring全局懶加載的優(yōu)劣及使用方法詳解

    這篇文章主要介紹了Spring全局懶加載的優(yōu)劣及使用方法詳解,Spring 懶加載是一種延遲加載的機(jī)制,它允許在需要時(shí)才創(chuàng)建和初始化對(duì)象,而不是在應(yīng)用程序啟動(dòng)時(shí)就立即加載所有對(duì)象,通過懶加載,可以提高應(yīng)用程序的性能和資源利用率,需要的朋友可以參考下
    2023-10-10
  • Spring Boot jpa Service層代碼實(shí)例

    Spring Boot jpa Service層代碼實(shí)例

    這篇文章主要介紹了Spring Boot jpa Service層代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • AsyncHttpClient?ClientStats源碼流程解讀

    AsyncHttpClient?ClientStats源碼流程解讀

    這篇文章主要為大家介紹了AsyncHttpClient?ClientStats源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論

共和县| 靖宇县| 三门县| 渝北区| 无锡市| 新源县| 嘉荫县| 五河县| 博白县| 宜章县| 亳州市| 凌源市| 门头沟区| 榆社县| 常山县| 同仁县| 那曲县| 文山县| 商水县| 青河县| 遂宁市| 稷山县| 宣城市| 兴仁县| 东兰县| 苗栗市| 开原市| 中江县| 大竹县| 山阳县| 肥东县| 奉节县| 综艺| 郁南县| 兴业县| 蓬溪县| 揭东县| 江永县| 新安县| 浠水县| 闵行区|