Tomcat web.xml 檔案詳解
註:此帖中web.xml為轉載內容,原作者為張寧。
這是一篇電子檔中的內容,對於使用Tomcat來部署Web項目的初學者來說,對web.xml的配置大多都不太熟悉,現在將該部分內容提取出來,給初學者參考,以免在部署項目時出現配置web.xml引發的問題而不知所措。文中的注釋非常詳細,不熟悉的朋友可以以此作為參考。
<?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"<br />"http://java.sun.com/dtd/web-app_2_3.dtd"><br /><web-app><br /><display-name>Sample Application</display-name><br /><description>This is a sample application</description><br /><filter><br /><!--過濾器名,可以隨便取,當web應用中有多個過濾器時不允許重名.--><br /><filter-name>SampleFilter</filter-name><br /><!--具體的過濾器的類的完整的包名+類名。注意:不能寫錯了。否則容器不能正確的執行個體化過濾器--><br /><filter-class>mypack.SampleFilter</filter-class><br /><init-param><br /><!-- 參數名 --><br /><param-name>initParam1</param-name><br /><!-- 參數值 --><br /><param-value>2</param-value><br /></init-param><br /></filter><br /><!-- Define the SampleFilter Mapping --><br /><filter-mapping><br /><!--過濾器名,注意要和上面的<filter-name>裡的名字一樣。--><br /><filter-name>SampleFilter</filter-name><br /><!--指定過濾器負責過濾的URL。這裡指定了*.jsp表示在訪問任何一個jsp頁面時都會先使用mypack.SampleFilter過濾器進行過濾。如果寫成login.jsp.則只有在訪問login.jsp時才會調用該過濾器進行過濾。--><br /><url-pattern>*.jsp</url-pattern><br /></filter-mapping><br /><servlet><br /><!-- Servlet名字,可以隨便取,有多個Servlet時不允許重名--><br /><servlet-name>SampleServlet</servlet-name><br /><!--指定實現這個Servlet的類。完整的包名+類名--><br /><servlet-class>mypack.SampleServlet</servlet-class><br /><!--定義Servlet的初始化參數(包括參數名和參數值)一個<servlet>元素裡可以有多個<init-param>元素。在Servlet類中通過ServletConfig類的來訪問這些參數。<br />--><br /><init-param><br /><!-- 參數名 --><br /><param-name>initParam1</param-name><br /><!-- 參數值 --><br /><param-value>2</param-value><br /></init-param><br /><!--指定當前Web應用啟動時裝載Servlet的次序。當這個數>=0時,容器會按數值從小到大依次載入。如果數值<0或沒有指定,容器將載Web客戶首次訪問這個Servlet時載入。--><br /><load-on-startup>1</load-on-startup><br /></servlet><br /><!-- Define the SampleServlet Mapping --><br /><servlet-mapping><br /><!--必須和<servlet>裡的<servlet-name>內容一樣--><br /><servlet-name>SampleServlet</servlet-name><br /><!--指定訪問這個Servlet的URL。這裡給出的是對於整個Web應用的相對URL路徑。--><br /><url-pattern>/sample</url-pattern><br /></servlet-mapping><br /><session-config><br /><!--設定HttpSession的生命週期。這裡以分計算。下面的設定指明Session在最長不啟用時間為10分鐘。過了這個時間,Servlet容器將它作為無效處理。注意這裡和程式裡指定的計數單位不同,程式裡是以秒為單位。<session-config>只有<session-timeout>這個元素--><br /><session-timeout>10</session-timeout><br /></session-config><br /><!—配置會話接聽程式,class表示一個HttpSessionListener或HttpSessionActivationListener或HttpSessionAttributeListener或HttpSessionBindingListener的實作類別。該節點允許多個--><br /><listener><br /><listener-class>com.cn.SessionListenerImpl</listener-class><br /></listener><br /><!-- 在使用者訪問Web應用時,如果僅給出Web應用的根訪問URL,沒有指定具體的檔案名稱,容器會調用<weblcome-file-list>元素裡指定的檔案清單。<welcome-file-list>裡允許有多個<welcome-file>元素,每個元素代表一個檔案。容器會先找第一文檔案件是否存在,如果存在這把這個檔案返回個客戶,不再進行其他檔案的尋找。如果不存在則找第二個檔案,依次類推。如果所有檔案都不存在,則跑出404錯誤--><br /><welcome-file-list><br /><welcome-file>login.jsp</welcome-file><br /><welcome-file>index.htm</welcome-file><br /></welcome-file-list><br /><!-- 設定Web應用引用的自訂標籤庫。下面的代碼定義了一個/mytaglib標籤庫,它對應的TLD檔案為/WEB-INF/mytaglib.tld --><br /><taglib><br /><taglib-uri>/mytaglib</taglib-uri><br /><taglib-location>/WEB-INF/mytaglib.tld</taglib-location><br /></taglib><br /><!-- 如果Web應用訪問了由Servlet容器管理的某個JNDI Resource必須在這裡聲明對JNDI Resource的引用 --><br /><resource-ref><br /><!-- 對應用資源的說明 --><br /><description>DB Connection</description><br /><!-- 指定所引用資源的JNDI名字 --><br /><res-ref-name>jdbc/sampleDb</res-ref-name><br /><!-- 指定所引用資源的類名字 --><br /><res-type>javax.sql.DataSource</res-type><br /><!-- 指定管理所引用資源的Manager, 它有兩個可選值:Container和Application.Container表示由容器來建立和管理Resource,Application表示由Web應用來管理和建立Resource --><br /><res-auth>Container</res-auth><br /></resource-ref><br /><security-constraint><br /><web-resource-collection><br /><!-- 這個名字是必須的,由工具使用,別的地方不使用 --><br /><web-resource-name>my application</web-resource-name><br /><!-- 指定要受約束的資源,至少有一個。可以有多個. --><br /><uri-pattern>/*</uri-pattern><br /><!-- 描述了度可與URL模式指定的資源哪些方法是受約束的,如果沒有<http-method>元素,表示任何角色的人都無法訪問任何http的方法<br />。這裡放置了GET方法,表示只有GET方法是受約束的。其他任何角色的人可以訪問POST和其他的方法。但不能訪問GET方法。--><br /><http-method>GET</http-method><br /></web-resource-collection><br /><!-- 如果沒有<auth-constraint>表示所有角色都能訪問GET方法,如果是<auth-constraint/>表示任何角色都不能訪問GET方法 --><br /><auth-constraint><br /><!-- 可選的。表示哪些角色能夠在指定的資源上調用受約束的方法。這裡表示只有擁有Admin和Member角色的人能夠訪問GET方法<br /><security-role>>裡的<role-name>值一樣 --><br /><role-name>Admin</role-name><br /><role-name>Member</role-name><br /></auth-constraint><br /></security-constraint><br /><!-- 將指定的角色映射到web.xml裡 --><br /><security-role><br /><description>The role that is required to log into the my Application<br /></description><br /><!-- 以下的角色和tomcat-users.xml裡的<tomcat-users>裡的<role rolename=""/>裡的rolename屬性值對應 --><br /><role-name>Guest</role-name><br /><role-name>Admin</role-name><br /><role-name>Member</role-name><br /></security-role><br /><!-- 如果要想進行認證,必須有<login-config>--><br /><login-config><br /><!-- 認證方式。有4種:BASIC:基本。 DIGEST:摘要。CLIENT-CERT:客戶認證(能提供最高強度的認證)。FORM:表單 --><br /><auth-method>FORM</auth-method><br /><realm-name><br />Tomcat Servet Configuraton Form-Based Authentication Area<br /></realm-name><br /><form-login-config><br /><form-login-page>/login.jsp</form-login-page><br /><form-error-page>/error.jsp</form-error-page><br /></form-login-config><br /></login-config><br /></web-app>
By CodingMouse
2009.5.5