国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

web.xml 配置介紹

2019-11-14 23:04:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
web.xml 配置介紹

這個(gè)不是原創(chuàng),有點(diǎn)早了,具體從哪里來(lái)的已經(jīng)記不得了。但是東西是實(shí)實(shí)在在的。


1、啟動(dòng)一個(gè)WEB項(xiàng)目的時(shí)候,WEB容器會(huì)去讀取它的配置文件web.xml,讀取<listener>和<context-param>兩個(gè)結(jié)點(diǎn)。

2、緊急著,容創(chuàng)建一個(gè)ServletContext(servlet上下文),這個(gè)web項(xiàng)目的所有部分都將共享這個(gè)上下文。

3、容器將<context-param>轉(zhuǎn)換為鍵值對(duì),并交給servletContext。

4、容器創(chuàng)建<listener>中的類(lèi)實(shí)例,創(chuàng)建監(jiān)聽(tīng)器。

二 Load-on-startup

Load-on-startup 元素在web應(yīng)用啟動(dòng)的時(shí)候指定了servlet被加載的順序,它的值必須是一個(gè)整數(shù)。如果它的值是一個(gè)負(fù)整數(shù)或是這個(gè)元素不存在,那么容器會(huì)在該servlet被調(diào)用的時(shí)候,加載這個(gè)servlet 。如果值是正整數(shù)或零,容器在配置的時(shí)候就加載并初始化這個(gè)servlet,容器必須保證值小的先被加載。如果值相等,容器可以自動(dòng)選擇先加載誰(shuí)。

在servlet的配置當(dāng)中,<load-on-startup>5</load-on-startup>的含義是:

標(biāo)記容器是否在啟動(dòng)的時(shí)候就加載這個(gè)servlet。

當(dāng)值為0或者大于0時(shí),表示容器在應(yīng)用啟動(dòng)時(shí)就加載這個(gè)servlet;

當(dāng)是一個(gè)負(fù)數(shù)時(shí)或者沒(méi)有指定時(shí),則指示容器在該servlet被選擇時(shí)才加載。

正數(shù)的值越小,啟動(dòng)該servlet的優(yōu)先級(jí)越高。

三 加載順序

首先可以肯定的是,加載順序與它們?cè)?web.xml 文件中的先后順序無(wú)關(guān)。即不會(huì)因?yàn)?filter 寫(xiě)在 listener 的前面而會(huì)先加載 filter。最終得出的結(jié)論是:ServletContext ->listener -> filter -> servlet

同時(shí)還存在著這樣一種配置節(jié):context-param,它用于向 ServletContext 提供鍵值對(duì),即應(yīng)用程序上下文信息。我們的 listener, filter 等在初始化時(shí)會(huì)用到這些上下文中的信息,那么 context-param 配置節(jié)是不是應(yīng)該寫(xiě)在 listener 配置節(jié)前呢?實(shí)際上 context-param 配置節(jié)可寫(xiě)在任意位置,因此真正的加載順序?yàn)椋篶ontext-param -> listener -> filter -> servlet

對(duì)于某類(lèi)配置節(jié)而言,與它們出現(xiàn)的順序是有關(guān)的。以 filter 為例,web.xml 中當(dāng)然可以定義多個(gè) filter,與 filter 相關(guān)的一個(gè)配置節(jié)是 filter-mapping,這里一定要注意,對(duì)于擁有相同 filter-name 的 filter 和 filter-mapping 配置節(jié)而言,filter-mapping 必須出現(xiàn)在 filter 之后,否則當(dāng)解析到 filter-mapping 時(shí),它所對(duì)應(yīng)的 filter-name 還未定義。web 容器啟動(dòng)時(shí)初始化每個(gè) filter 時(shí),是按照 filter 配置節(jié)出現(xiàn)的順序來(lái)初始化的,當(dāng)請(qǐng)求資源匹配多個(gè) filter-mapping 時(shí),filter 攔截資源是按照 filter-mapping 配置節(jié)出現(xiàn)的順序來(lái)依次調(diào)用 doFilter() 方法的。

servlet 同 filter 類(lèi)似,此處不再贅述。

由此,可以看出,web.xml 的加載順序是:ServletContext ->context-param -> listener -> filter -> servlet ,而同個(gè)類(lèi)型之間的實(shí)際程序調(diào)用的時(shí)候的順序是根據(jù)對(duì)應(yīng)的 mapping 的順序進(jìn)行調(diào)用的。

四 web.xml文件詳解

我將自己知道的web.xml的元素整理了一下:

web.xml首先是肯定要包含它的schema.

1 <web-app xmlns="http://java.sun.com/xml/ns/j2ee"2      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"3      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"4      version="2.4">5 6 </web-app>

其它的元素都放在<web-app></web-app>之中。

<discription></discription> 是對(duì)站臺(tái)的描述 <display-name></display-name> 定義站臺(tái)的名稱(chēng) <distributable/> 是指定該站臺(tái)是否可分布式處理

<context-param></context-param> 用來(lái)設(shè)定web站臺(tái)的環(huán)境參數(shù),它包含兩個(gè)子元素: <param-name></param-name> 用來(lái)指定參數(shù)的名稱(chēng) <param-value></param-value> 用來(lái)設(shè)定參數(shù)值。比如:

1 <context-param>2      <param-name>my_param</param-name>3      <param-value>hello</param-value>4  </context-param>

在此設(shè)定的參數(shù),可以在servlet中用 getServletContext().getInitParameter("my_param") 來(lái)取得

<filter></filter> 是用來(lái)聲明filter的相關(guān)設(shè)定,它包含以下子元素:

  <filter-name></filter-name> 這當(dāng)然就是指定filter的名字

  <filter-class></filter-class> 這是用來(lái)定義filter的類(lèi)的名稱(chēng)

<init-param></init-param> 用來(lái)定義參數(shù),它有兩個(gè)子元素:

  <param-name></param-name> 用來(lái)指定參數(shù)的名稱(chēng)

  <param-value></param-value> 用來(lái)設(shè)定參數(shù)值。

比如:

1 <filter>2          <filter-name>setCharacterEncoding</filter-name>3          <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>4          <init-param>5              <param-name>encoding</param-name>6              <param-value>GB2312</param-value>7          </init-param>8  </filter>

與<filter></filter>同時(shí)使用的是<filter-mapping></filter-mapping> 用來(lái)定義filter所對(duì)應(yīng)的URL,它有兩個(gè)子元素:

  <filter-name></filter-name> 指定filter的名字

  <url-pattern></url-pattern> 指定filter所對(duì)應(yīng)的URL。

比如:

1 <filter-mapping>2          <filter-name>setCharacterEncoding</filter-name>3          <url-pattern>/*</url-pattern>4  </filter-mapping>

<listener></listener> 用來(lái)設(shè)定Listener接口,它的主要子元素為

  <listener-class></listener-class> 定義Listener的類(lèi)名稱(chēng)

比如:

1 <listener>2      <listener-class>com.myTest.ContextListener</listener-class> 3  </listener>

<servlet></servlet> 用來(lái)聲明一個(gè)servlet的數(shù)據(jù),主要有以下子元素:

  <servlet-name></servlet-name> 指定servlet的名稱(chēng)

  <servlet-class></servlet-class> 指定servlet的類(lèi)名稱(chēng)

  <jsp-file></jsp-file> 指定web站臺(tái)中的某個(gè)JSP網(wǎng)頁(yè)的完整路徑

  <init-param></init-param> 用來(lái)定義參數(shù),和前面的<init-param>差不多

同樣,與<servlet></servlet>一起使用的是<servlet-mapping></servlet-mapping> 用來(lái)定義servlet所對(duì)應(yīng)的URL,包含兩個(gè)子元素:

  <servlet-name></servlet-name> 指定servlet的名稱(chēng)

  <url-pattern></url-pattern> 指定servlet所對(duì)應(yīng)的URL

比如:

1 <servlet>2          <servlet-name>ShoppingServlet</servlet-name>3          <servlet-class>com.myTest.ShoppingServlet</servlet-class>4  </servlet>5      6  <servlet-mapping>7          <servlet-name>ShoppingServlet</servlet-name>8          <url-pattern>/shop/ShoppingServlet</url-pattern>9  </servlet-mapping>

<session-config></session-config> 用來(lái)定義web站臺(tái)中的session參數(shù),包含一個(gè)子元素:

  <session-timeout></session-timeout> 用來(lái)定義這個(gè)web站臺(tái)所有session的有效期限,單位為分鐘

<mime-mapping></mime-mapping> 定義某一個(gè)擴(kuò)展名和某一個(gè)MIME Type做對(duì)映,包含兩個(gè)子元素:

  <extension></extension> 擴(kuò)展名的名稱(chēng)

  <mime-type></mime-type> MIME格式

比如:

1 <mime-mapping>2      <extension>doc</extension>3      <mime-type>application/vnd.ms-Word</mime-type>4  </mime-mapping> 5  <mime-mapping>6      <extension>xls</extension>7      <mime-type>application/vnd.ms-Excel</mime-type>8  </mime-mapping>

<welcome-file-list></welcom-file-list> 用來(lái)定義首頁(yè)的列單,包含一個(gè)子元素:

  <welcome-file></welcome-file> 指定首頁(yè)的文件名稱(chēng)

比如:

1 <welcome-file-list>2      <welcome-file>index.jsp</welcome-file>3      <welcome-file>index.html</welcome-file>4  </welcom-file-list>

<error-page></error-page> 用來(lái)處理錯(cuò)誤代碼或異常的頁(yè)面,有三個(gè)子元素:

  <error-code></error-code> 指定錯(cuò)誤代碼

  <exception-type></exception-type> 指定一個(gè)JAVA異常類(lèi)型

  <location></location> 指定在web站臺(tái)內(nèi)的相關(guān)資源路徑

比如:

1 <error-page>2      <error-code>404</error-code>3      <location>/error404.jsp</location>4  </error-page>5  <error-page>6      <exception-type>java.lang.Exception</exception-type>7      <location>/exception.jsp</location>8  </error-page>

<taglib></taglib> 用來(lái)設(shè)定JSP網(wǎng)頁(yè)所用到的Tag Library路徑,有兩個(gè)子元素:

  <taglib-uri></taglib-uri> 定義TLD文件的URI,在JSP網(wǎng)頁(yè)中用taglib指令便可取得該URI的TLD文件

  <taglib-location></taglib-location> 指定TLD文件相對(duì)于web站臺(tái)的存放位置

比如:

1 <taglib>2        <taglib-uri>myTaglib</taglib-uri>3        <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>4  </taglib>

<resource-ref></resource-ref> 定義利用JNDI取得站臺(tái)可利用的資源,有五個(gè)子元素:

  <description></description> 資源說(shuō)明

  <rec-ref-name></rec-ref-name> 資源名稱(chēng)

  <res-type></res-type> 資源種類(lèi)

  <res-auth></res-auth> 資源經(jīng)由Application或Container來(lái)許可

  <res-sharing-scope></res-sharing-scope> 資源是否可以共享,有Shareable和Unshareable兩個(gè)值,默認(rèn)為Shareable

比如,配置數(shù)據(jù)庫(kù)連接池就可在此配置:

1 <resource-ref>2          <description>JNDI JDBC DataSource of shop</description>3          <res-ref-name>jdbc/sample_db</res-ref-name>4          <res-type>javax.sql.DataSource</res-type>5          <res-auth>Container</res-auth>6  </resource-ref>

<jsp-config> 包括<taglib> 和<jsp-PRoperty-group> 兩個(gè)子元素。

其中<taglib>元素在JSP 1.2時(shí)就已經(jīng)存在;而<jsp-property-group>是JSP 2.0 新增的元素。

<jsp-property-group>元素主要有八個(gè)子元素,它們分別為:

1.<description>:設(shè)定的說(shuō)明;

2.<display-name>:設(shè)定名稱(chēng);

3.<url-pattern>:設(shè)定值所影響的范圍,如:/CH2 或 /*.jsp;

4.<el-ignored>:若為true,表示不支持EL 語(yǔ)法;

5.<scripting-invalid>:若為true,表示不支持<% scripting %>語(yǔ)法;

6.<page-encoding>:設(shè)定JSP 網(wǎng)頁(yè)的編碼;

7.<include-prelude>:設(shè)置JSP 網(wǎng)頁(yè)的抬頭,擴(kuò)展名為.jspf;

8.<include-coda>:設(shè)置JSP 網(wǎng)頁(yè)的結(jié)尾,擴(kuò)展名為.jspf。

一個(gè)簡(jiǎn)單的<jsp-config>元素完整配置:

 1 <jsp-config> 2      <taglib> 3          <taglib-uri>Taglib</taglib-uri> 4          <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location> 5      </taglib> 6      <jsp-property-group> 7          <description>Special property group for JSP Configuration JSP example.</description> 8          <display-name>JSPConfiguration</display-name> 9          <url-pattern>/jsp/* </url-pattern>10          <el-ignored>true</el-ignored>11          <page-encoding>GB2312</page-encoding>12          <scripting-invalid>true</scripting-invalid>13          <include-prelude>/include/prelude.jspf</include-prelude>14          <include-coda>/include/coda.jspf</include-coda>15      </jsp-property-group>16  </jsp-config>  

配置web.xml來(lái)限制對(duì)某些servlet的請(qǐng)求

有時(shí)我們只希望通過(guò)認(rèn)證的用戶(hù)才能請(qǐng)求某些servlet的話,就可以在web.xml中來(lái)進(jìn)行相應(yīng)的配置,來(lái)達(dá)到此目的。

這就要用到<security-constraint></security-constraint>元素。 對(duì)于tomcat,中web.xml使用security-constraint元素需要在位于<Tomcat-installation-directory>/conf/tomcat-users.xml的XML文件中創(chuàng)建用戶(hù)名和密碼。比如下面的這個(gè)tomcat-users.xml文件:

1 <?xml version='1.0' encoding='utf-8'?>2  <tomcat-users>3    <role rolename="tomcat"/>4    <role rolename="manager"/>5    <role rolename="admin"/>6    <user username="tomcat" password="tomcat" roles="tomcat"/>7    <user username="both" password="tomcat" roles="tomcat,manager"/>8    <user username="admin" password="admin" roles="admin"/>9  </tomcat-users>

此XML片段包括一個(gè)tomcat-users根元素,它包含一個(gè)或多個(gè)role和user元素。

然后在Web應(yīng)用程序的web.xml中創(chuàng)建security-constraint、login-config和security-role元素。

 1 <security-constraint> 2        <web-resource-collection> 3            <web-resource-name>HelloServlet</web-resource-name> 4            <url-pattern>/HelloServlet</url-pattern> 5            <http-method>GET</http-method> 6            <http-method>POST</http-method> 7        </web-resource-collection> 8        <auth-constraint> 9            <description>This applies only to the "tomcat" security role</description>10            <role-name>admin</role-name>11        </auth-constraint>12        <user-data-constraint>13            <transport-guarantee>NONE</transport-guarantee>14        </user-data-constraint>15    </security-constraint>16    17    <login-config>18        <auth-method>BASIC</auth-method>19    </login-config>20    <security-role>21        <role-name>admin</role-name>22    </security-role>

其中security-constraint元素包含一個(gè)或多個(gè)web-resource-collection元素,它是描述Web應(yīng)用程序中的哪些web資源受到指定安全限制的保護(hù)。http-method元素指定安全限制覆蓋的HTTP方法。上面的例子中,當(dāng)我們對(duì)/HelloServlet的GET或POST請(qǐng)求時(shí)將觸發(fā)配置的安全機(jī)制。 auth-constraint元素用于描述允許訪問(wèn)Web組件的安全角色。此例中安全角色的例子有tomcat、manager、admin。而只有當(dāng)作為admin角色的用戶(hù)才可以訪問(wèn)HelloServlet。

Web應(yīng)用程序通過(guò)login-config元素來(lái)認(rèn)證用戶(hù),并確認(rèn)該用戶(hù)是否為正確的角色。 longin-config包含的transport-guarantee子元素用來(lái)指定認(rèn)證方法,BASIC是一種常見(jiàn)的Web認(rèn)證方式,瀏覽器給用戶(hù)提示一個(gè)對(duì)話框,要求輸入用戶(hù)名和密碼,隨后Tomcat將給出的用戶(hù)名和密碼與tomcat-users.xml中的用戶(hù)名和密碼進(jìn)行比較,然后使用前面的security-constraint配置來(lái)確定用戶(hù)是否可訪問(wèn)受保護(hù)的servlet。

(除BASIC外,還可以是FORM、CLIENT-CERT、DIGEST等)

其實(shí)這種認(rèn)證方法實(shí)際上有兩個(gè)步驟: 1、檢查提供的用戶(hù)名和密碼是否正確。 2、判斷用戶(hù)是否映射到特定的安全角色。例如,用戶(hù)可能提供了正確的用戶(hù)名和密碼,但沒(méi)有映射到特定的安全角色,也將被禁止訪問(wèn)特定的Web資源。

五 相應(yīng)元素配置1、Web應(yīng)用圖標(biāo):指出IDE和GUI工具用來(lái)表示W(wǎng)eb應(yīng)用的大圖標(biāo)和小圖標(biāo)

1 <icon>    2  <small-icon>/images/app_small.gif</small-icon>    3  <large-icon>/images/app_large.gif</large-icon>    4  </icon>  

2、Web 應(yīng)用名稱(chēng):提供GUI工具可能會(huì)用來(lái)標(biāo)記這個(gè)特定的Web應(yīng)用的一個(gè)名稱(chēng)< display-name>Tomcat Example</display-name> 3、Web 應(yīng)用描述: 給出于此相關(guān)的說(shuō)明性文本< disciption>Tomcat Example servlets and JSP pages.</disciption> 4、上下文參數(shù):聲明應(yīng)用范圍內(nèi)的初始化參數(shù)。

1 <context-param>    2      <param-name>ContextParameter</para-name>    3      <param-value>test</param-value>    4      <description>It is a test parameter.</description>    5  </context-param>

在servlet里面可以通過(guò)getServletContext().getInitParameter("context/param")得到5、過(guò)濾器配置:將一個(gè)名字與一個(gè)實(shí)現(xiàn)javaxs.servlet.Filter接口的類(lèi)相關(guān)聯(lián)。

 1 <filter>     2          <filter-name>setCharacterEncoding</filter-name>     3          <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>     4          <init-param>     5              <param-name>encoding</param-name>     6              <param-value>GB2312</param-value>     7          </init-param>     8  </filter>     9  <filter-mapping>    10          <filter-name>setCharacterEncoding</filter-name>    11          <url-pattern>/*</url-pattern>    12  </filter-mapping>  

6、監(jiān)聽(tīng)器配置

1 <listener>    2        <listerner-class>listener.SessionListener</listener-class>    3  </listener> 

7、Servlet配置

基本配置

1 <servlet>    2     <servlet-name>snoop</servlet-name>    3        <servlet-class>SnoopServlet</servlet-class>    4     </servlet>    5     <servlet-mapping>    6        <servlet-name>snoop</servlet-name>    7     <url-pattern>/snoop</url-pattern>    8 </servlet-mapping> 

高級(jí)配置

 1 <servlet>     2        <servlet-name>snoop</servlet-name>     3        <servlet-class>SnoopServlet</servlet-class>     4        <init-param>     5           <param-name>foo</param-name>     6           <param-value>bar</param-value>     7        </init-param>     8        <run-as>     9           <description>Security role for anonymous access</description>    10           <role-name>tomcat</role-name>    11        </run-as>    12     </servlet>    13     <servlet-mapping>    14        <servlet-name>snoop</servlet-name>    15        <url-pattern>/snoop</url-pattern>    16     </servlet-mapping> 

元素說(shuō)明 <servlet></servlet> 用來(lái)聲明一個(gè)servlet的數(shù)據(jù),主要有以下子元素: <servlet-name></servlet-name> 指定servlet的名稱(chēng) <servlet-class></servlet-class> 指定servlet的類(lèi)名稱(chēng) <jsp-file></jsp-file> 指定web站臺(tái)中的某個(gè)JSP網(wǎng)頁(yè)的完整路徑 <init-param></init-param> 用來(lái)定義參數(shù),可有多個(gè)init-param。在servlet類(lèi)中通過(guò)getInitParamenter(String name)方法訪問(wèn)初始化參數(shù) <load-on-startup></load-on-startup>指定當(dāng)Web應(yīng)用啟動(dòng)時(shí),裝載Servlet的次序。 當(dāng)值為正數(shù)或零時(shí):Servlet容器先加載數(shù)值小的servlet,再依次加載其他數(shù)值大的servlet. 當(dāng)值為負(fù)或未定義:Servlet容器將在Web客戶(hù)首次訪問(wèn)這個(gè)servlet時(shí)加載它 <servlet-mapping></servlet-mapping> 用來(lái)定義servlet所對(duì)應(yīng)的URL,包含兩個(gè)子元素 <servlet-name></servlet-name> 指定servlet的名稱(chēng) <url-pattern></url-pattern> 指定servlet所對(duì)應(yīng)的URL 8、會(huì)話超時(shí)配置(單位為分鐘)

1 <session-config>    2        <session-timeout>120</session-timeout>    3 </session-config>   

9、MIME類(lèi)型配置

1 <mime-mapping>    2        <extension>htm</extension>    3        <mime-type>text/html</mime-type>    4 </mime-mapping>

10、指定歡迎文件頁(yè)配置

1 <welcome-file-list>    2        <welcome-file>index.jsp</welcome-file>    3        <welcome-file>index.html</welcome-file>    4        <welcome-file>index.htm</welcome-file>    5 </welcome-file-list>   

11、配置錯(cuò)誤頁(yè)面一、 通過(guò)錯(cuò)誤碼來(lái)配置error-page

1  <error-page>    2        <error-code>404</error-code>    3        <location>/NotFound.jsp</location>    4 </error-page> 

上面配置了當(dāng)系統(tǒng)發(fā)生404錯(cuò)誤時(shí),跳轉(zhuǎn)到錯(cuò)誤處理頁(yè)面NotFound.jsp。二、通過(guò)異常的類(lèi)型配置error-page

1 <error-page>    2         <exception-type>java.lang.NullException</exception-type>    3         <location>/error.jsp</location>    4 </error-page>

上面配置了當(dāng)系統(tǒng)發(fā)生java.lang.NullException(即空指針異常)時(shí),跳轉(zhuǎn)到錯(cuò)誤處理頁(yè)面error.jsp 12、TLD配置

1 <taglib>    2         <taglib-uri>http://jakarta.apache.org/tomcat/debug-taglib</taglib-uri>    3         <taglib-location>/WEB-INF/jsp/debug-taglib.tld</taglib-location>    4 </taglib>  

如果MyEclipse一直在報(bào)錯(cuò),應(yīng)該把<taglib> 放到 <jsp-config>中

1 <jsp-config>    2        <taglib>    3            <taglib-uri>http://jakarta.apache.org/tomcat/debug-taglib</taglib-uri>    4            <taglib-location>/WEB-INF/pager-taglib.tld</taglib-location>    5        </taglib>    6 </jsp-config> 

13、資源管理對(duì)象配置

1 <resource-env-ref>    2         <resource-env-ref-name>jms/StockQueue</resource-env-ref-name>    3 </resource-env-ref>

14、資源工廠配置

1 <resource-ref>    2         <res-ref-name>mail/Session</res-ref-name>    3         <res-type>javax.mail.Session</res-type>    4         <res-auth>Container</res-auth>    5 </resource-ref>

配置數(shù)據(jù)庫(kù)連接池就可在此配置:

1 <resource-ref>    2         <description>JNDI JDBC DataSource of shop</description>    3         <res-ref-name>jdbc/sample_db</res-ref-name>    4         <res-type>javax.sql.DataSource</res-type>    5         <res-auth>Container</res-auth>    6 </resource-ref> 

15、安全限制配置

 1 <security-constraint>     2        <display-name>Example Security Constraint</display-name>     3        <web-resource-collection>     4           <web-resource-name>Protected Area</web-resource-name>     5           <url-pattern>/jsp/security/protected/*</url-pattern>     6           <http-method>DELETE</http-method>     7           <http-method>GET</http-method>     8           <http-method>POST</http-method>     9           <http-method>PUT</http-method>    10        </web-resource-collection>    11        <auth-constraint>    12          <role-name>tomcat</role-name>    13          <role-name>role1</role-name>    14        </auth-constraint>    15 </security-constraint>

16、登陸驗(yàn)證配置

1 <login-config>    2       <auth-method>FORM</auth-method>    3       <realm-name>Example-Based Authentiation Area</realm-name>    4       <form-login-config>    5          <form-login-page>/jsp/security/protected/login.jsp</form-login-page>    6          <form-error-page>/jsp/security/protected/error.jsp</form-error-page>    7       </form-login-config>    8 </login-config> 

17、安全角色:security-role元素給出安全角色的一個(gè)列表,這些角色將出現(xiàn)在servlet元素內(nèi)的security-role-ref元素的role-name子元素中。分別地聲明角色可使高級(jí)IDE處理安全信息更為容易。

1 <security-role>    2       <role-name>tomcat</role-name>    3  </security-role>

18、Web環(huán)境參數(shù):env-entry元素聲明Web應(yīng)用的環(huán)境項(xiàng)

1 <env-entry>    2       <env-entry-name>minExemptions</env-entry-name>    3       <env-entry-value>1</env-entry-value>    4       <env-entry-type>java.lang.Integer</env-entry-type>    5  </env-entry>

19、EJB 聲明

1 <ejb-ref>    2       <description>Example EJB reference</decription>    3       <ejb-ref-name>ejb/Account</ejb-ref-name>    4       <ejb-ref-type>Entity</ejb-ref-type>    5       <home>com.mycompany.mypackage.AccountHome</home>    6       <remote>com.mycompany.mypackage.Account</remote>    7  </ejb-ref>

20、本地EJB聲明

1 <ejb-local-ref>    2       <description>Example Loacal EJB reference</decription>    3       <ejb-ref-name>ejb/ProcessOrder</ejb-ref-name>    4       <ejb-ref-type>Session</ejb-ref-type>    5       <local-home>com.mycompany.mypackage.ProcessOrderHome</local-home>    6       <local>com.mycompany.mypackage.ProcessOrder</local>    7  </ejb-local-ref> 

21、配置DWR

1 <servlet>    2        <servlet-name>dwr-invoker</servlet-name>    3        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>    4  </servlet>    5  <servlet-mapping>    6        <servlet-name>dwr-invoker</servlet-name>    7        <url-pattern>/dwr/*</url-pattern>    8  </servlet-mapping>

22、配置Struts

 1 <display-name>Struts Blank Application</display-name>     2      <servlet>     3          <servlet-name>action</servlet-name>     4          <servlet-class>     5              org.apache.struts.action.ActionServlet     6          </servlet-class>     7          <init-param>     8              <param-name>detail</param-name>     9              <param-value>2</param-value>    10          </init-param>    11          <init-param>    12              <param-name>debug</param-name>    13              <param-value>2</param-value>    14          </init-param>    15          <init-param>    16              <param-name>config</param-name>    17              <param-value>/WEB-INF/struts-config.xml</param-value>    18          </init-param>    19          <init-param>    20              <param-name>application</param-name>    21              <param-value>ApplicationResources</param-value>    22          </init-param>    23          <load-on-startup>2</load-on-startup>    24      </servlet>    25      <servlet-mapping>    26          <servlet-name>action</servlet-name>    27          <url-pattern>*.do</url-pattern>    28      </servlet-mapping>    29      <welcome-file-list>    30          <welcome-file>index.jsp</welcome-file>    31      </welcome-file-list>    32 33      <!-- Struts Tag Library Descriptors -->    34      <taglib>    35          <taglib-uri>struts-bean</taglib-uri>    36          <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>    37      </taglib>    38      <taglib>    39          <taglib-uri>struts-html</taglib-uri>    40          <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>    41      </taglib>    42      <taglib>    43      <taglib-uri>struts-nested</taglib-uri>    44      <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>    45      </taglib>    46      <taglib>    47          <taglib-uri>struts-logic</taglib-uri>    48          <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>    49      </taglib>    50      <taglib>    51          <taglib-uri>struts-tiles</taglib-uri>    52          <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>    53      </taglib> 

23、配置Spring(基本上都是在Struts中配置的)

 1 <!-- 指定spring配置文件位置 -->     2     <context-param>     3        <param-name>contextConfigLocation</param-name>     4        <param-value>     5         <!--加載多個(gè)spring配置文件 -->     6          /WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml     7        </param-value>     8     </context-param>     9 10     <!-- 定義SPRING監(jiān)聽(tīng)器,加載spring -->    11 12  <listener>    13       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    14  </listener>    15 16  <listener>    17       <listener-class>    18         org.springframework.web.context.request.RequestContextListener    19       </listener-class>    20  </listener>  

其他說(shuō)明:

web.xml 文件中一般包括 servlet, spring, filter, listenr的配置。那么他們是按照一個(gè)什么順序加載呢?加載順序會(huì)影響對(duì)spring bean 的調(diào)用。

比如filter 需要用到 bean ,但是加載順序是 先加載filter 后加載spring,則filter中初始化操作中的bean為null;

首先可以肯定 加載順序與他們?cè)趙eb.xml 文件中的先后順序無(wú)關(guān)。

web.xml 中 listener 和 serverlet 的加載順序?yàn)?先 listener 后serverlet

最終得出結(jié)果:先 listener >> filter >> servlet >>spring

所以,如果過(guò)濾器中要使用到 bean,可以將spring 的加載 改成 Listener的方式

1 <listener>2          <listener-class>3              org.springframework.web.context.ContextLoaderListener4          </listener-class>5 </listener>

關(guān)于他們的內(nèi)部執(zhí)行順序,也需要注意,如下面文章中遇到的問(wèn)題

web.xml的filter執(zhí)行順序?qū)е碌膩y碼,切記!

發(fā)現(xiàn)引起bug的原因是web.xml的下面幾行:

 1    <filter-mapping> 2          <filter-name>SecurityFilter</filter-name> 3          <url-pattern>*.do</url-pattern> 4      </filter-mapping> 5  6     <filter-mapping> 7          <filter-name>CharacterEncoding</filter-name> 8          <url-pattern>*.do</url-pattern> 9      </filter-mapping>10 11     <filter-mapping>12          <filter-name>CharacterEncoding</filter-name>13          <url-pattern>*.jsp</url-pattern>14      </filter-mapping>

根據(jù)servlet2.3規(guī)范filter執(zhí)行是按照web.xml配置的filter-mapping先后順序進(jìn)行執(zhí)行,所以上面的配置會(huì)

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丽水市| 连江县| 潞西市| 嘉荫县| 石棉县| 什邡市| 泾川县| 六盘水市| 天津市| 台山市| 霍山县| 雷州市| 美姑县| 曲阳县| 南汇区| 平原县| 平顶山市| 工布江达县| 巴林左旗| 通江县| 卓资县| 泰安市| 葫芦岛市| 工布江达县| 阿巴嘎旗| 鄂伦春自治旗| 彭州市| 壶关县| 启东市| 临沧市| 神池县| 神木县| 襄城县| 揭东县| 南康市| 陆川县| 米易县| 怀化市| 南康市| 肥乡县| 芦山县|