jsp web.xml文件的作用及基本配置
更新時(shí)間:2009年07月15日 00:15:29 作者:
web工程中的web.xml文件有什么作用呢?它是每個(gè)web.xml工程都必須的嗎?
一個(gè)web中完全可以沒(méi)有web.xml文件,也就是說(shuō),web.xml文件并不是web工程必須的。
那什么時(shí)候需要,什么時(shí)候可以不需要呢?
要想回答上面的問(wèn)題,得先了解web.xml文件使用來(lái)干什么的。web.xml文件是用來(lái)配置:歡迎頁(yè)、servlet、filter等的。當(dāng)你的web工程沒(méi)用到這些時(shí),你可以不用web.xml文件來(lái)配置你的web工程。
那么web.xml能做的所有事情都有那些?
其實(shí),web.xml的模式(Schema)文件中定義了多少種標(biāo)簽元素,web.xml中就可以出現(xiàn)它的模式文件所定義的標(biāo)簽元素,它就能擁有定義出來(lái)的那些功能。web.xml的模式文件是由Sun公司定義的,每個(gè)web.xml文件的根元素<web-app>中,都必須標(biāo)明這個(gè)web.xml使用的是哪個(gè)模式文件。如:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
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_2_5.xsd">
</web-app>
而且web.xml的模式文件中定義的標(biāo)簽并不是定死的,模式文件也是可以改變的,一般來(lái)說(shuō),隨著web.mxl模式文件的版本升級(jí),里面定義的功能會(huì)越來(lái)越復(fù)雜,也即標(biāo)簽元素的種類會(huì)越來(lái)越多,但有些是不常用的,我們只需記住一些常用的就可以了。
下面列出web.xml常用的標(biāo)簽元素及這些標(biāo)簽元素的功能:
1、指定歡迎頁(yè)面,例如:
<welcome-file-list>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index1.jsp</welcome-file>
</welcome-file-list>
上面的例子指定了2個(gè)歡迎頁(yè)面,顯示時(shí)按順序從第一個(gè)找起,如果第一個(gè)存在,就顯示第一個(gè),后面的不起作用。如果第一個(gè)不存在,就找第二個(gè),以此類推。
關(guān)于歡迎頁(yè)面:
訪問(wèn)一個(gè)網(wǎng)站時(shí),默認(rèn)看到的第一個(gè)頁(yè)面就叫歡迎頁(yè),一般情況下是由首頁(yè)來(lái)充當(dāng)歡迎頁(yè)的。一般情況下,我們會(huì)在web.xml中指定歡迎頁(yè)。但web.xml并不是一個(gè)Web的必要文件,沒(méi)有web.xml,網(wǎng)站仍然是可以正常工作的。只不過(guò)網(wǎng)站的功能復(fù)雜起來(lái)后,web.xml的確有非常大用處,所以,默認(rèn)創(chuàng)建的動(dòng)態(tài)web工程在WEB-INF文件夾下面都有一個(gè)web.xml文件。
對(duì)于tomcat來(lái)說(shuō),當(dāng)你只指定一個(gè)web的根名,沒(méi)有指定具體頁(yè)面,去訪問(wèn)時(shí)一個(gè)web時(shí), 如果web.xml文件中配置了歡迎頁(yè),那么就返回指定的那個(gè)頁(yè)面作為歡迎頁(yè),而在文中沒(méi)有web.xml文件,或雖然有web.xml,但web.xml也沒(méi)指定歡迎頁(yè)的情況下,它默認(rèn)先查找index.html文件,如果找到了,就把index.html作為歡迎頁(yè)還回給瀏覽器。如果沒(méi)找到index.html,tomcat就去找index.jsp。找到index.jsp就把它作為歡迎頁(yè)面返回。而如果index.html和index.jsp都沒(méi)找到,又沒(méi)有用web.xml文件指定歡迎頁(yè)面,那此時(shí)tomcat就不知道該返回哪個(gè)文件了,它就顯示The requested resource (/XXX) is not available的頁(yè)面。其中XXX表示web的根名。但如果你指定了具體頁(yè)面,是可以正常訪問(wèn)的。
2、命名與定制URL。我們可以為Servlet和JSP文件命名并定制URL,其中定制URL是依賴一命名的,命名必須在定制URL前。下面拿serlet來(lái)舉例:
(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來(lái)舉例:
<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>Tommy@163.com</param-value>
</init-param>
</servlet>
經(jīng)過(guò)上面的配置,在servlet中能夠調(diào)用getServletConfig().getInitParameter("param1")獲得參數(shù)名對(duì)應(yīng)的值。
4、指定錯(cuò)誤處理頁(yè)面,可以通過(guò)“異常類型”或“錯(cuò)誤碼”來(lái)指定錯(cuò)誤處理頁(yè)面。
<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、設(shè)置過(guò)濾器:比如設(shè)置一個(gè)編碼過(guò)濾器,過(guò)濾所有資源
<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、設(shè)置監(jiān)聽(tīng)器:
<listener>
<listener-class>net.test.XXXLisenet</listener-class>
</listener>
7、設(shè)置會(huì)話(Session)過(guò)期時(shí)間,其中時(shí)間以分鐘為單位,假如設(shè)置60分鐘超時(shí):
<session-config>
<session-timeout>60</session-timeout>
</session-config>
除了這些標(biāo)簽元素之外,還可以往web.xml中添加那些標(biāo)簽元素呢,那些標(biāo)簽元素都能起什么作用呢?我們只要去查看web.xml的模式文件就能知道。直接看模式文件看不懂,可以找一些中文教程來(lái)看看。
那什么時(shí)候需要,什么時(shí)候可以不需要呢?
要想回答上面的問(wèn)題,得先了解web.xml文件使用來(lái)干什么的。web.xml文件是用來(lái)配置:歡迎頁(yè)、servlet、filter等的。當(dāng)你的web工程沒(méi)用到這些時(shí),你可以不用web.xml文件來(lái)配置你的web工程。
那么web.xml能做的所有事情都有那些?
其實(shí),web.xml的模式(Schema)文件中定義了多少種標(biāo)簽元素,web.xml中就可以出現(xiàn)它的模式文件所定義的標(biāo)簽元素,它就能擁有定義出來(lái)的那些功能。web.xml的模式文件是由Sun公司定義的,每個(gè)web.xml文件的根元素<web-app>中,都必須標(biāo)明這個(gè)web.xml使用的是哪個(gè)模式文件。如:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
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_2_5.xsd">
</web-app>
而且web.xml的模式文件中定義的標(biāo)簽并不是定死的,模式文件也是可以改變的,一般來(lái)說(shuō),隨著web.mxl模式文件的版本升級(jí),里面定義的功能會(huì)越來(lái)越復(fù)雜,也即標(biāo)簽元素的種類會(huì)越來(lái)越多,但有些是不常用的,我們只需記住一些常用的就可以了。
下面列出web.xml常用的標(biāo)簽元素及這些標(biāo)簽元素的功能:
1、指定歡迎頁(yè)面,例如:
<welcome-file-list>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index1.jsp</welcome-file>
</welcome-file-list>
上面的例子指定了2個(gè)歡迎頁(yè)面,顯示時(shí)按順序從第一個(gè)找起,如果第一個(gè)存在,就顯示第一個(gè),后面的不起作用。如果第一個(gè)不存在,就找第二個(gè),以此類推。
關(guān)于歡迎頁(yè)面:
訪問(wèn)一個(gè)網(wǎng)站時(shí),默認(rèn)看到的第一個(gè)頁(yè)面就叫歡迎頁(yè),一般情況下是由首頁(yè)來(lái)充當(dāng)歡迎頁(yè)的。一般情況下,我們會(huì)在web.xml中指定歡迎頁(yè)。但web.xml并不是一個(gè)Web的必要文件,沒(méi)有web.xml,網(wǎng)站仍然是可以正常工作的。只不過(guò)網(wǎng)站的功能復(fù)雜起來(lái)后,web.xml的確有非常大用處,所以,默認(rèn)創(chuàng)建的動(dòng)態(tài)web工程在WEB-INF文件夾下面都有一個(gè)web.xml文件。
對(duì)于tomcat來(lái)說(shuō),當(dāng)你只指定一個(gè)web的根名,沒(méi)有指定具體頁(yè)面,去訪問(wèn)時(shí)一個(gè)web時(shí), 如果web.xml文件中配置了歡迎頁(yè),那么就返回指定的那個(gè)頁(yè)面作為歡迎頁(yè),而在文中沒(méi)有web.xml文件,或雖然有web.xml,但web.xml也沒(méi)指定歡迎頁(yè)的情況下,它默認(rèn)先查找index.html文件,如果找到了,就把index.html作為歡迎頁(yè)還回給瀏覽器。如果沒(méi)找到index.html,tomcat就去找index.jsp。找到index.jsp就把它作為歡迎頁(yè)面返回。而如果index.html和index.jsp都沒(méi)找到,又沒(méi)有用web.xml文件指定歡迎頁(yè)面,那此時(shí)tomcat就不知道該返回哪個(gè)文件了,它就顯示The requested resource (/XXX) is not available的頁(yè)面。其中XXX表示web的根名。但如果你指定了具體頁(yè)面,是可以正常訪問(wèn)的。
2、命名與定制URL。我們可以為Servlet和JSP文件命名并定制URL,其中定制URL是依賴一命名的,命名必須在定制URL前。下面拿serlet來(lái)舉例:
(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來(lái)舉例:
<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>Tommy@163.com</param-value>
</init-param>
</servlet>
經(jīng)過(guò)上面的配置,在servlet中能夠調(diào)用getServletConfig().getInitParameter("param1")獲得參數(shù)名對(duì)應(yīng)的值。
4、指定錯(cuò)誤處理頁(yè)面,可以通過(guò)“異常類型”或“錯(cuò)誤碼”來(lái)指定錯(cuò)誤處理頁(yè)面。
<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、設(shè)置過(guò)濾器:比如設(shè)置一個(gè)編碼過(guò)濾器,過(guò)濾所有資源
<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、設(shè)置監(jiān)聽(tīng)器:
<listener>
<listener-class>net.test.XXXLisenet</listener-class>
</listener>
7、設(shè)置會(huì)話(Session)過(guò)期時(shí)間,其中時(shí)間以分鐘為單位,假如設(shè)置60分鐘超時(shí):
<session-config>
<session-timeout>60</session-timeout>
</session-config>
除了這些標(biāo)簽元素之外,還可以往web.xml中添加那些標(biāo)簽元素呢,那些標(biāo)簽元素都能起什么作用呢?我們只要去查看web.xml的模式文件就能知道。直接看模式文件看不懂,可以找一些中文教程來(lái)看看。
相關(guān)文章
JSP+Servlet實(shí)現(xiàn)文件上傳到服務(wù)器功能
這篇文章主要為大家詳細(xì)介紹了JSP+Servlet實(shí)現(xiàn)文件上傳到服務(wù)器功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09jsp導(dǎo)出excel并支持分sheet導(dǎo)出的方法
這篇文章主要介紹了jsp導(dǎo)出excel并支持分sheet導(dǎo)出的方法,涉及Java針對(duì)excel操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10JSP實(shí)時(shí)顯示當(dāng)前系統(tǒng)時(shí)間的四種方式示例解析
這篇文章主要介紹了JSP實(shí)時(shí)顯示當(dāng)前系統(tǒng)時(shí)間的四種方式示例解析,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08實(shí)例講解JSP Model2體系結(jié)構(gòu)(下)
實(shí)例講解JSP Model2體系結(jié)構(gòu)(下)...2006-10-10建立JSP操作以提高數(shù)據(jù)庫(kù)訪問(wèn)的效率
建立JSP操作以提高數(shù)據(jù)庫(kù)訪問(wèn)的效率...2006-10-10JSP實(shí)現(xiàn)網(wǎng)頁(yè)訪問(wèn)統(tǒng)計(jì)
這篇文章主要介紹了JSP實(shí)現(xiàn)網(wǎng)頁(yè)訪問(wèn)統(tǒng)計(jì)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-10-10weblogic 8.1下重新編譯java類但不用重啟服務(wù)器的方法
weblogic 8.1下重新編譯java類但不用重啟服務(wù)器的方法...2007-12-12