JAVA WEB工程中的web.xml檔案
在傳統的java web專案中不可避免的是要配置web.xml檔案,在應用啟動時web.xml用來初始化工程配置資訊,其重要性就不言而喻了。
既然是xml檔案,它就遵循一些xml檔案的書寫規格,這裡就不說明了,web.xml所對應的xml Schema檔案中定義了多少種標籤元素,web.xml中就可以出現它所定義的標籤元素,也就具備哪些特定的功能。web.xml檔案的根元素為<web-app>。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
//這裡是我們所寫的內容
</web-app>
web.xml常用的會來配置專案的描述、名稱、圖表等基本資訊,還有context-param,filter,filter-mapping,listener,session-config,servlet,welcome-file-list,error-page等。
配置基本資訊
<display-name>demo</display-name><!-- 專案名稱 -->
<description>This is a demo</description> <!-- 專案描述 -->
<icon><!-- 圖表icon -->
<small-icon>/images/small.gif</small-icon>
<large-icon>/images/large.gir</large-icon >
</icon>
context-param
<context-param>
<param-name>config</param-name>
<param-value>/WEB-INF/server.properties</param-value>
</context-param>
context-param元素含有一對引數名和引數值,用作應用的servlet上下文初始化引數。引數名在整個Web應用中必須是惟一的。
context-param 元素用來設定web應用的環境引數(context),它包含兩個子元素: param-name和param-value.
<param-name>引數名稱</param-name> 設定Context名稱
<param-value>值</param-value> 設定Context名稱的值 </context-param>
param-value值的獲取
在JSP網頁中可以使用下列方法來取得:${initParam.param_name}
在Servlet可以使用下列方法來獲得:
String param_name=getServletContext().getInitParamter(“param_name”);
filter AND filter-mapping
filter元素用於指定Web容器中的過濾器
filter-mapping元素用來宣告Web應用中的filter對映。
filter 和 filter-mapping 是一組使用的兩個標籤
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
過濾器可被對映到一個servlet或一個URL模式。將過濾器對映到一個 servlet中會造成過濾器作用於servlet上。將過濾器對映到一個URL模式中則可以將過濾器應用於任何資源,只要該資源的URL與URL模式匹配。過濾是按照部署描述符的filter-mapping元素出現的順序執行的。
listener
listener元素用來註冊一個監聽器類,可以在Web應用中包含該類。使用listener元素,可以收到事件什麼時候發生以及用什麼作為響應的通知。
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
session-config
session-config包含一個子元素session-timeout.定義web應用中的session引數
<session-config>
<!-- 定義這個web應用所有session的有效期限.單位為30分鐘.-->
<session-timeout>30</session-timeout>
</session-config>
servlet AND servlet-mapping
servlet 在web.xml中完成的一個最常見的任務是對servlet或JSP頁面給出名稱和定製的URL.
servlet-mapping元素包含兩個子元素servlet-name和url-pattern.用來定義servlet所對應URL.兩個標籤結對使用
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.purang.web.login.LoginServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
load-on-startup
特別說明下load-on-startup的子標籤
1)load-on-startup元素標記容器是否在啟動的時候就載入這個servlet(例項化並呼叫其init()方法)。
2)它的值必須是一個整數,表示servlet應該被載入的順序
2)當值為0或者大於0時,表示容器在應用啟動時就載入並初始化這個servlet;
3)當值小於0或者沒有指定時,則表示容器在該servlet被選擇時才會去載入。
4)正數的值越小,該servlet的優先順序越高,應用啟動時就越先載入。
5)當值相同時,容器就會自己選擇順序來載入。
所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是優先順序,而非啟動延遲時間。