web.xml文件內容詳細分析
web.xml檔案詳解
# 前言:一般的web工程都會用到web.xml,web .xml主要用來配置,可以方便的開發web工程。 web.xml主要用來設定Filter、Listener、Servlet等。但是要說明的是web.xml並不是必須的,一個web工程可以沒有web.xml檔。
1、WEB工程載入web.xml流程
經過個人測試,WEB工程載入順序與元素節點在檔案中的配置順序無關。即不會因為 filter 寫在 listener 的前面而會先載入 filter。 WEB容器的載入順序是:ServletContext -> context-param -> listener -> filter -> servlet。並且這些元素可以配置在文件中的任意位置。
載入過程順序如下:
#啟動一個WEB專案的時候,WEB容器會去讀取它的設定檔web.xml,讀取
和 兩個結點。 緊急著,容創建一個ServletContext(servlet上下文),這個web專案的所有部分都將共享這個上下文。
容器將
轉換為鍵值對,並交給servletContext。 容器建立
中的類別實例,建立監聽器。
2、web.xml檔案元素詳解
1、schema
web.xml的模式檔案是由Sun公司定義的,每個web.xml檔案的根元素
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"></web-app>
2、
指出IDE與GUI工具用來表示Web應用的大圖標和小圖標。
<icon> <small-icon>/images/app_small.gif</small-icon> <large-icon>/images/app_large.gif</large-icon></icon>
3、
提供GUI工具可能會用來標記這個特定的Web應用的一個名稱
<display-name>Tomcat Example</display-name>
4、
給於此相關的說明性文字
<disciption>Tomcat Example servlets and JSP pages.</disciption>
5、
聲明應用範圍內的初始化參數。它用於向 ServletContext提供鍵值對,即應用程式上下文資訊。我們的listener, filter等初始化時會用到這些上下文中的信息。在servlet裡面可以透過getServletContext().getInitParameter("context/param")得到。
<context-param> <param-name>ContextParameter</para-name> <param-value>test</param-value> <description>It is a test parameter.</description></context-param>
6、
## 將一個名字與一個實現一個實作xs.servlet.Filter介面的類別相關聯。
<filter> <filter-name>setCharacterEncoding</filter-name> <filter-class>com.myTest.setCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param></filter><filter-mapping> <filter-name>setCharacterEncoding</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
7、
<listener> <listerner-class>com.listener.SessionListener</listener-class> </listener>
8、
#
#
指定servlet的名稱 - ##
指定servlet的類別名稱 指定web站台中的某個JSP網頁的完整路徑 用來定義參數,可有多個init-param。在servlet類別中透過getInitParamenter(String name)方法存取初始化參數 指定当Web应用启动时,装载Servlet的次序。当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet。当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它。 用来定义servlet所对应的URL,包含两个子元素 指定servlet的名称 指定servlet所对应的URL
<!-- 基本配置 --><servlet> <servlet-name>snoop</servlet-name> <servlet-class>SnoopServlet</servlet-class></servlet><servlet-mapping> <servlet-name>snoop</servlet-name> <url-pattern>/snoop</url-pattern></servlet-mapping><!-- 高级配置 --><servlet> <servlet-name>snoop</servlet-name> <servlet-class>SnoopServlet</servlet-class> <init-param> <param-name>foo</param-name> <param-value>bar</param-value> </init-param> <run-as> <description>Security role for anonymous access</description> <role-name>tomcat</role-name> </run-as></servlet><servlet-mapping> <servlet-name>snoop</servlet-name> <url-pattern>/snoop</url-pattern></servlet-mapping>
9、
单位为分钟。
<session-config> <session-timeout>120</session-timeout></session-config>
10、
<mime-mapping> <extension>htm</extension> <mime-type>text/html</mime-type></mime-mapping>
11、
<welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file></welcome-file-list>
12、
<!-- 1、通过错误码来配置error-page。当系统发生×××错误时,跳转到错误处理页面。 --><error-page> <error-code>404</error-code> <location>/NotFound.jsp</location></error-page><!-- 2、通过异常的类型配置error-page。当系统发生java.lang.NullException(即空指针异常)时,跳转到错误处理页面。 --><error-page> <exception-type>java.lang.NullException</exception-type> <location>/error.jsp</location></error-page>
13、
:设定的说明 :设定名称 :设定值所影响的范围,如: /CH2 或 /*.jsp :若为 true,表示不支持 EL 语法 :若为 true,表示不支持 <% scripting %>语法 :设定 JSP 网页的编码 :设置 JSP 网页的抬头,扩展名为 .jspf :设置 JSP 网页的结尾,扩展名为 .jspf
<jsp-config> <taglib> <taglib-uri>Taglib</taglib-uri> <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location> </taglib> <jsp-property-group> <description>Special property group for JSP Configuration JSP example.</description> <display-name>JSPConfiguration</display-name> <url-pattern>/jsp/* </url-pattern> <el-ignored>true</el-ignored> <page-encoding>GB2312</page-encoding> <scripting-invalid>true</scripting-invalid> <include-prelude>/include/prelude.jspf</include-prelude> <include-coda>/include/coda.jspf</include-coda> </jsp-property-group></jsp-config>
对于Web 应用程式来说,Scriptlet 是个不乐意被见到的东西,因为它会使得HTML 与Java 程式码交相混杂,对于程式的维护来说相当的麻烦,必要的时候,可以在web.xml 中加上
3、Mapping规则
当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localhost/test去掉,剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了。
其匹配规则和顺序如下:
精确路径匹配。例子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先 进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。
最長路徑匹配。範例:servletA的url-pattern為/test/*,而servletB的url-pattern為/test/a/*,此時造訪http://localhost/test/a時,容器會選擇路徑最長的servlet來匹配,也就是這裡的servletB。
擴展匹配,如果url最後一段包含擴展,容器將會根據擴展選擇合適的servlet。範例:servletA的url-pattern:*.action
# 以」/'開頭和以」/*」結尾的是用來做路徑映射的。以前綴”*.”開頭的是用來做擴展映射的。 所以,為什麼定義”/*.action”這樣一個看起來很正常的匹配會錯?導致容器無法判斷。
以上是web.xml文件內容詳細分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

XML檔可以用PPT開啟嗎? XML,即可擴展標記語言(ExtensibleMarkupLanguage),是一種廣泛應用於資料交換和資料儲存的通用標記語言。與HTML相比,XML更加靈活,能夠定義自己的標籤和資料結構,使得資料的儲存和交換更加方便和統一。而PPT,即PowerPoint,是微軟公司開發的一種用於創建簡報的軟體。它提供了圖文並茂的方

使用Python實現XML資料的合併和去重XML(eXtensibleMarkupLanguage)是一種用於儲存和傳輸資料的標記語言。在處理XML資料時,有時候我們需要將多個XML檔案合併成一個,或移除重複的資料。本文將介紹如何使用Python實現XML資料的合併和去重的方法,並給出對應的程式碼範例。一、XML資料合併當我們有多個XML文件,需要將其合

Python中的XML資料轉換為CSV格式XML(ExtensibleMarkupLanguage)是一種可擴充標記語言,常用於資料的儲存與傳輸。而CSV(CommaSeparatedValues)則是一種以逗號分隔的文字檔案格式,常用於資料的匯入和匯出。在處理資料時,有時需要將XML資料轉換為CSV格式以便於分析和處理。 Python作為一種功能強大

使用Python實現XML資料的篩選和排序引言:XML是一種常用的資料交換格式,它以標籤和屬性的形式儲存資料。在處理XML資料時,我們經常需要對資料進行篩選和排序。 Python提供了許多有用的工具和函式庫來處理XML數據,本文將介紹如何使用Python實現XML資料的篩選和排序。讀取XML檔案在開始之前,我們需要先讀取XML檔案。 Python有許多XML處理函式庫,

使用PHP將XML資料匯入資料庫引言:在開發中,我們經常需要將外部資料匯入到資料庫中進行進一步的處理和分析。而XML作為一種常用的資料交換格式,也常被用來儲存和傳輸結構化資料。本文將介紹如何使用PHP將XML資料匯入資料庫。步驟一:解析XML文件首先,我們需要解析XML文件,擷取所需的資料。 PHP提供了幾種解析XML的方式,其中最常用的是使用Simple

Python實作XML與JSON之間的轉換導語:在日常的開發過程中,我們常常需要將資料在不同的格式之間轉換。 XML和JSON是常見的資料交換格式,在Python中,我們可以使用各種函式庫來實作XML和JSON之間的相互轉換。本文將介紹幾種常用的方法,並附帶程式碼範例。一、XML轉JSON在Python中,我們可以使用xml.etree.ElementTree模

使用Python處理XML中的錯誤和異常XML是一種常用的資料格式,用於儲存和表示結構化的資料。當我們使用Python處理XML時,有時可能會遇到一些錯誤和異常。在本篇文章中,我將介紹如何使用Python來處理XML中的錯誤和異常,並提供一些範例程式碼供參考。使用try-except語句捕捉XML解析錯誤當我們使用Python解析XML時,有時候可能會遇到一些

Python解析XML中的特殊字元和轉義序列XML(eXtensibleMarkupLanguage)是一種常用的資料交換格式,用於在不同系統之間傳輸和儲存資料。在處理XML檔案時,經常會遇到包含特殊字元和轉義序列的情況,這可能會導致解析錯誤或誤解資料。因此,在使用Python解析XML檔案時,我們需要了解如何處理這些特殊字元和轉義序列。一、特殊字元和
