web工程中的web.xml文件有什么作用呢?它是每個web.xml工程都必須的嗎,?
一個web中完全可以沒有web.xml文件,也就是說,,web.xml文件并不是web工程必須的,。
那什么時候需要,什么時候可以不需要呢,? 要想回答上面的問題,,得先了解web.xml文件使用來干什么的。web.xml文件是用來配置:歡迎頁,、servlet,、filter等的。當你的web工程沒用到這些時,,你可以不用web.xml文件來配置你的web工程,。
那么web.xml能做的所有事情都有那些?
其實,,web.xml的模式(Schema)文件中定義了多少種標簽元素,,web.xml中就可以出現(xiàn)它的模式文件所定義的標簽元素,它就能擁有定義出來的那些功能,。web.xml的模式文件是由Sun公司定義的,,每個web.xml文件的根元素<web-app>中,都必須標明這個web.xml使用的是哪個模式文件,。如:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java./xml/ns/javaee" xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:schemaLocation="http://java./xml/ns/javaee http://java./xml/ns/javaee/web-app_2_5.xsd"> </web-app> 而且web.xml的模式文件中定義的標簽并不是定死的,,模式文件也是可以改變的,一般來說,,隨著web.mxl模式文件的版本升級,,里面定義的功能會越來越復雜,也即標簽元素的種類會越來越多,,但有些是不常用的,,我們只需記住一些常用的就可以了。
下面列出web.xml常用的標簽元素及這些標簽元素的功能: 1,、指定歡迎頁面,,例如:
<welcome-file-list> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index1.jsp</welcome-file> </welcome-file-list> 上面的例子指定了2個歡迎頁面,顯示時按順序從第一個找起,,如果第一個存在,,就顯示第一個,,后面的不起作用。如果第一個不存在,,就找第二個,,以此類推。 關(guān)于歡迎頁面:
訪問一個網(wǎng)站時,,默認看到的第一個頁面就叫歡迎頁,,一般情況下是由首頁來充當歡迎頁的。一般情況下,,我們會在web.xml中指定歡迎頁,。但web.xml并不是一個Web的必要文件,沒有web.xml,,網(wǎng)站仍然是可以正常工作的,。只不過網(wǎng)站的功能復雜起來后,web.xml的確有非常大用處,,所以,,默認創(chuàng)建的動態(tài)web工程在WEB-INF文件夾下面都有一個web.xml文件。
對于tomcat來說,,當你只指定一個web的根名,,沒有指定具體頁面,去訪問時一個web時,, 如果web.xml文件中配置了歡迎頁,,那么就返回指定的那個頁面作為歡迎頁,而在文中沒有web.xml文件,,或雖然有web.xml,,但web.xml也沒指定歡迎頁的情況下,它默認先查找index.html文件,,如果找到了,,就把index.html作為歡迎頁還回給瀏覽器。如果沒找到index.html,,tomcat就去找index.jsp,。找到index.jsp就把它作為歡迎頁面返回。而如果index.html和index.jsp都沒找到,,又沒有用web.xml文件指定歡迎頁面,,那此時tomcat就不知道該返回哪個文件了,它就顯示The requested resource (/XXX) is not available的頁面,。其中XXX表示web的根名,。但如果你指定了具體頁面,是可以正常訪問的。 2,、命名與定制URL,。我們可以為Servlet和JSP文件命名并定制URL,其中定制URL是依賴一命名的,命名必須在定制URL前,。下面拿serlet來舉例:
(1),、為Servlet命名: <servlet> <servlet-name>servlet1</servlet-name> <servlet-class>net.test.TestServlet</servlet-class> </servlet> (2)、為Servlet定制URL,、
<servlet-mapping> <servlet-name>servlet1</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 3,、定制初始化參數(shù):可以定制servlet、JSP,、Context的初始化參數(shù),,然后可以再servlet、JSP,、Context中獲取這些參數(shù)值。下面哪servlet來舉例: <servlet> <servlet-name>servlet1</servlet-name> <servlet-class>net.test.TestServlet</servlet-class> <init-param> <param-name>userName</param-name> <param-value>Tommy</param-value> </init-param> <init-param> <param-name>E-mail</param-name> <param-value>[email protected]</param-value> </init-param> </servlet> 經(jīng)過上面的配置,,在servlet中能夠調(diào)用getServletConfig().getInitParameter("param1")獲得參數(shù)名對應的值,。 4、指定錯誤處理頁面,,可以通過“異常類型”或“錯誤碼”來指定錯誤處理頁面,。
<error-page> <error-code>404</error-code> <location>/error404.jsp</location> </error-page> ----------------------------- <error-page> <exception-type>java.lang.Exception<exception-type> <location>/exception.jsp<location> </error-page> 5、設置過濾器:比如設置一個編碼過濾器,,過濾所有資源
<filter> <filter-name>XXXCharaSetFilter</filter-name> <filter-class>net.test.CharSetFilter</filter-class> </filter> <filter-mapping> <filter-name>XXXCharaSetFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 6,、設置監(jiān)聽器:
<listener> <listener-class>net.test.XXXLisenet</listener-class> </listener> 7、設置會話(Session)過期時間,,其中時間以分鐘為單位,,假如設置60分鐘超時:
<session-config> <session-timeout>60</session-timeout> </session-config> 除了這些標簽元素之外,還可以往web.xml中添加那些標簽元素呢,,那些標簽元素都能起什么作用呢,?我們只要去查看web.xml的模式文件就能知道。
本文來自CSDN博客,,轉(zhuǎn)載請標明出處:http://blog.csdn.net/wo20055812/archive/2011/02/14/6183916.aspx
|
|
來自: 杰出天下 > 《linux系統(tǒng)編程》