當前位置:首頁 » 網頁前端 » webxml如何載入的
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

webxml如何載入的

發布時間: 2023-06-06 17:47:48

1. web開發中容器一啟動就載入web.xml嗎

是的,web容器一啟動就會載入web.xml,從配置文件的名稱就可以很明顯看出來。
1 、啟動一個 WEB
項目的時候, WEB 容器會去讀取它的配置文件 web.xml
,讀取 <listener> 和 <context-param>
兩個結點。
2 、緊急著,容創建一個 ServletContext
( servlet 上下文),這個 web 項目的所有部分都將共享這個上下文。

3 、容器將 <context-param>
轉換為鍵值對,並交給 servletContext 。

4 、容器創建 <listener>
中的類實例,創建監聽器。

2. web.xml文件主要配置有哪些,都有什麼含義

①web.xml文件是用來配置:歡迎頁、servlet、filter等配置文件用的。當你的web工程沒用到這些時,你可以不用web.xml文件來配置你的web工程

web.xml的模式文件中定義的標簽並不是定死的,模式文件也是可以改變的,一般來說,隨著web.mxl模式文件的版本升級,裡面定義的功能會越來越復雜,

也即標簽元素的種類會越來越多,但有些是不常用的,我們只需記住一些常用的就可以了。

首先是定義頭和根元素

聲明為xml文件,版本為1.0,編碼為utf-8

聲明該文件的內容可以使用xsi的標簽庫

聲明標簽的使用范圍是被javaee的開發使用的

聲明可以使用的標簽庫和對應的具體的標簽庫版本地址。

web.xml的模式(Schema)文件中定義了多少種標簽元素,它就能擁有定義出來的那些功能

隨著web.mxl模式文件的版本升級,裡面定義的功能會越來越復雜,也即標簽元素的種類會越來越多.

定義項目的名稱.

項目名稱

歡迎頁面

servlet

配置springmvc DispatcherServlet( 前台控制器)-->example這個Servlet的名字是example,可以有多個DispatcherServlet,是通過名字來區分的。

async-supported

啟動一個新的線程去處理你的請求,完成之後調用你指定的回調函數來完成整個非同步操作。

一般的jsp是通過地址欄輸入一個地址,或者提交表單的方式發送請求的,這樣網頁都會被刷新。但是如果你在jsp頁面發送一個ajax請求的話,跟前兩種不同,

後台會返回給jsp頁面內容,頁面不會直接刷新,這樣可以把返回的數據寫在頁面的div中,這樣就完成了頁面的局部刷新。

舉個例子,你做一個查詢功能,頁面上有查詢條件和查詢結果顯示區域,你可以點查詢按鈕的時候通過ajax非同步發送你的查詢條件,

而你得到後台返回的查詢結果後,更新你的jsp頁面的查詢結果,jsp的其他部分,比如查詢條件,都沒有更新,jsp沒有刷新,而是更新了查詢結果這一塊內容

  url-pattern   默認匹配所有請求Servlet攔截匹配規則可以自已定義1、攔截*.do、*.htm, 例如:/user/add.do,這是最傳統的方式,最簡單也最實用。不會導致靜態文件(jpg,js,css)被攔截。2、攔截/,例如:/user/add,可以實現現在很流行的REST風格。很多互聯網類型的應用很喜歡這種風格的URL。弊端:會導致靜態文件(jpg,js,css)被攔截後不能正常顯示。

監聽器

Listener獲取的是Web應用ServletContext(application)的配置參數。-為Web應用配置Listener的兩種方式: 使用@WebListener修飾Listener實現類即可 在web.xml文檔中使用進行配置。我們選擇web.xml這種配置方式,只有一個元素指定Listener的實現類.

②啟動WEB項目的時候,Tomcat容器首先會去它的配置文件讀取兩個節點listener和context-param。

然後Tomcat會創建一個ServletContext(application),WEB項目所有部分都將共享這個上下文

將applicationContext.xml存入ServletContext中

Tomcat容器根據class類路徑來創建監聽

上面這些都是在web項目還沒有完全啟動起來就完成的工作,而servlet是在第一次發起請求時被實例化的

而且一般不會被容器銷毀,並服務於多個用戶的請求.

web.xml的載入順序是: context-param-> listener -> filter -> servlet.

filter

Filter可認為是Servlet的「增強版」,因此Filter配置與Servlet的配置非常相似,需要配置兩部分:配置Filter名稱和Filter攔截器URL模式。區別在於Servlet通常只配置一個URL,而Filter可以同時配置多個請求的URL。配置Filter有兩種方式:

在Filter類中通過Annotation進行配置。

在web.xml文件中通過配置文件進行配置。

①網路

②http://blog.csdn.net/believejava/article/details/43229361

1.在web.xml里配置監聽器、過濾器、攔截器,書寫順序有沒有什麼要求?

根據網上資料來分析,應該是沒有書寫順序的要求,容器會按照自己的載入方式去載入順序.

2.監聽器是必須要配置的嗎?

不是必須要配置.

3假設配置了多個listener,那麼會先載入哪個listener

如果有多個listener的情況下,我們可以根據自己的需要去手動設置先去載入哪個listener.

今天的分享就到這里啦,歡迎大家點贊、轉發、留言、拍磚~

技能樹.IT修真院

「我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫」。

這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧~

http://www.jnshu.com/login/1/14708688

PPT :  https://ptteng.github.io/PPT/PPT-java/Java-task2-webxml.html#/

3. 如何在web.xml添加自己得配置文件,並在tomcat啟動時候實現載入

jsp + servlet + tomcat例子中:
添加這樣的descirpto在web.xml文件並可以解析
....
<my-config>
<location>/WEB-INF/my/my-config.xml</location>
</my-config>
....
然後根據自己的配置文件完成類的載入和響應的功能
--------------------------
我自己的思路:修改web.xml依據的deploy descriptor文件
然後在自己取得相關配置文件的解析內容........

4. tomcat web.xml啟動載入類

把你需要啟動時自動運行的類做成一個Servlet,然後在web.xml做如下配置:
<servlet>
<servlet-name>StartupLoadServlet</servlet-name>
<servlet-class>gzu.db.sius.servlet.SIUSInitServlet</servlet-class>
<init-param>
<param-name>checkSource</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>StartupLoadServlet</servlet-name>
<url-pattern>/servlet/StartupLoadServlet</url-pattern>
</servlet-mapping>
關鍵在這一行:
<load-on-startup>0</load-on-startup>
表示在tomcat啟動時載入.

5. web.xml是怎麼讀取的

web.xml是系統自動生成的,當你的web應用部署到tomcat上的時候,啟動tomcat時它就開始讀取了,而且這個路徑是固定的。

6. 如何通過web.xml載入自定義的xml文件

首先創建一個類
public class ContextInitListener implements ServletContextListener
使得該類成為一個監聽器。用於監聽整個容器生命周期的,主要是初始化和銷毀的。
類創建後要在web.xml配置文件中增加一個簡單的監聽器配置,即剛才我們定義的類。
Xml代碼

<listener>
<!-- lang: xml -->
<description>ServletContextListener</description>
<!-- lang: xml -->
<listener-class>com.test.web.filter.ContextInitListener</listener-class>
<!-- lang: xml -->
</listener>

配置好監聽器後我們開始編寫ContextInitListener 的代碼。實現介面後會自動生成兩個方法,初始化和銷毀,我們就只貼出這個吧,另一個沒什麼用。web項目通常來說,一般來說相對路徑是在WEB-INF/classes,獲取該路徑下的文件,最好用getClass().getResourceAsStream(「/baseconfig.properties」);比較簡單。
Java代碼

@Override
public void contextInitialized(ServletContextEvent sce) {
Properties props = new Properties();
InputStream inputStream = null;
try {
inputStream = getClass().getResourceAsStream("/baseconfig.properties");
props.load(inputStream);
String tempPath = (String) props.get("path");
} catch (IOException ex) {
ex.printStackTrace();
}
}