1. 程式人生 > >JAVA WEB工程中的web.xml檔案

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的取值12345代表的是優先順序,而非啟動延遲時間。