在分析web.xml文檔之前我想先說一下web.xml中根元素<web-app>各子元素的順序問題,因為在web.xml中元素定義的先后順序是不能顛倒的(除非
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
在web.xml中頂層元素為<web-app>,其他所有的子元素都必須定義在<web-app>內<display-name>元素定義這個web應用的名字,Java Web 服務器的Web管理工具將用這個名字來標志Web應用。
<description>元素用來聲明Web應用的描述信息
<context-param>元素用來配置外部引用的,在servlet中如果要獲得該元素中配置的值,String param-value = getServletContext().getInitParameter("param-name")
<filter>
<filter-name>SampleFilter</filter-name>
<filter-class>com.lpdev.SampleFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SampleFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
以上是配置了一個servlet過濾器,對于servlet容器收到的客戶請求以及發出的響應結果,servlet都能檢查和修改其中的信息,以上代碼指名當客戶請求訪問Web應用中的所有JSP文件時,將觸發SampleFilter過濾器工作,具體的過濾事務在由<filter-class>中指定的類來完成
<servlet>
<servlet-name>IncludeServlet</servlet-name>
<servlet-class>com.lpdev.IncludeServlet</servlet-class>
<init-param>
<param-name>copyright</param-name>
<param-value>/foot.jspf</param-value>
<load-on-startup>1</load-on-startup>
</init-param>
</servlet>
配置Servlet,<servlet-name>是servlet的名字,<servlet-class>是實現這個Servlet的類,<init-param>定義Servlet的初始化參數(參數名和參數值),一個Servlet可以有多個<init-param>,在Servlet類中通過getInitParameter(String name)方法訪問初始化參數
<servlet-mapping>
<servlet-name>IncludeServlet</servlet-name>
<url-pattern>/IncludeServlet</url-pattern>
</servlet-mapping>
配置Servlet映射,<servlet-mapping>元素用來設定客戶訪問某個Servlet的URL,這里只需給出對于整個web應用的相對的URL路徑,<url-pattern>中的“/”表示開始于Web應用的根目錄例如,如果你在你本地機器上使用Tomcat4.1.x,并且創建了名為“myapp”的應用程序,<url-pattern>/IncludeServlet</url-pattern>該Servlet的完整web地址就是http://localhost:8080/myapp/IncludeServlet
<session-config>元素用來設定HttpSession的生命周期,該元素只有一個<session-timeout>屬性,時間單位是“秒”。
<welcome-file-list>當用戶訪問web時,如果僅僅給出web應用的Root URL,沒有指定具體文件名,容器調用該配置,該元素可以包含多個<welcome-file>屬性。
<taglib>元素用來設置web引用的tag library,例示定義了一個“/mytaglib”標簽庫,它對應的tld文件為:/WEB_INF/mytaglib.tld
<taglib>
<taglib-url>/mytaglib</taglib-url>
<taglib-locationg>/WEB-INF/mytaglib.tld</taglib-location>
</taglib>
<resource-ref>如果web應用由Servlet容器管理的某個JNDI Resource,必須在web.xml中聲明對這個JNDI Resource的引用。
<resource-ref>
<description>DB Connection</description> //說明
<res-ref-name>jdbc/sampleDB</res-ref-name> //引用資源的JNDI名字
<res-type>javax.sql.DataSource</res-type> //引用資源的類名字
<res-auth>Container</res-auth> //管理引用資源的Manager
</resource-ref>
<security-constraint>用來為Web應用定義安全約束
<security-constraint>
<web-resource-collection>//聲明受保護的web資源
<web-resource-name>ResourceServlet</web-resource-name>//標識受保護web資源
<url-pattern>/ResourceServlet</url-pattern>//指定受保護的URL路徑
<http-method>GET</http-method>//指定受保護的方法
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>//可以訪問受保護資源的角色
<description>this applies only to admin secrity role</description>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>元素指定當Web客戶訪問受保護資源時,系統彈出的登陸對話框的類型。例示配置了基于表單驗證的登陸界面
<login-config>
<auth-method>FORM</auth-method>//BASIC(基本驗證法),DIGEST(摘要驗證),FORM(表單驗證)
<real-name>設定安全域的名稱</realname>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
<security-role>指明這個Web應用引用的所有角色名字
<security-role>
<description>描述</description>
<role-name>admin</role-name>
</security-role>
posted on 2006-08-10 15:10
xzc 閱讀(2404)
評論(0) 編輯 收藏 所屬分類:
Web