15. web.xml的配置
這個文件是Tomcat工程中最基礎也是最重要的配置文件,Tomcat啟動項目的時候會加載並讀取這個文件,所以很有必要弄懂這個文件。
XML聲明和根元素
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp"> …… </web-app>
第一行是XML聲明,它定義了XML的版本(1.0)和所使用的編碼(UTF-8)
第二行的<web-app></web-app>標簽就是此文件的根元素,web.xml文件的最主要的配置信息就包含在這個標簽之內,接下來就重點介紹這個標簽所包含的內容。xml文件不僅對大小寫敏感,而且對出現在其他元素中的次序敏感。所以標簽大小寫一定要使用正確,而且XML聲明必須是文件中的第一項,DOCTYPE聲明必須是第二項,而web-app元素必須是第三項。同樣在web-app元素內,元素的次序也很重要。
Web應用配置
<icon> <small-icon>/images/small_icon.gif</small-icon> <large-icon>/images/large_icon.gif</large-icon> </icon> <display-name>WEB</display-name> <desciption>WEB Example</desciption> <context-param> <param-name>name</para-name> <param-value>value</param-value> <description>description</description> </context-param>
<icon>標簽指出IDE和GUI工具用來表示Web應用的大圖標和小圖標的位置
<display-name>標簽指出此Web應用的應用名稱
<desciption>對Web應用的一些描述信息
<context-param>聲明此應用範圍內的初始化參數,這些參數可以再servlet類中通過getServletContext().getInitParameter("name")方法獲取
filter過濾器
<filter> <filter-name>MyFilter</filter-name> <filter-class>com.filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern> /main.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/addProduct.jsp</url-pattern> </filter-mapping>
<filter>標簽內部配置過濾器,<filter-name>標簽指定次過濾器的名字,<filter-class>標簽指定此過濾器指向的類,此類必須實現javax.servlet.Filter接口。<filter-mapping>標簽用來關聯一個或多個servlet或jsp頁面(/main.jsp和/addProduct.jsp)。註意無論有多少個<filter-mapping>,他們的<filter-name>必須和前面的名字一致。
listener監聽器
<listener> <listener-class>com.channel.http.SessionListener</listener-class> </listener>
<listener>標簽指定監聽器,用於監聽Web應用中某些對象、信息的創建、銷毀、增加,修改,刪除等動作的發生,然後做出相應的響應處理。當範圍對象的狀態發生變化的時候,服務器自動調用監聽器對象中的方法。
servlet
<servlet> <servlet-name>yqzl</servlet-name> <servlet-class> com.channel.http.servlet.MainServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>yqzl</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
<servlet>標簽用於指定此Web應用的servlet相關配置,這個配置相當重要。<servlet-name>標簽指定此servlet的名字,<servlet-class>指定servlet的類,這個類開發者可以自己寫,一般會繼承HttpServlet類,用來初始化整個Web項目和接受http請求並處理。<init-param>標簽裏面可以配置一些參數。
<load-on-startup>標簽指定當前Web應用啟動時裝載Servlet的次序,它的內容必須是整數,當這個數>=0時,容器會按數值從小到大依次加載。如果數值<0或沒有指定,容器將在用戶首次訪問時加載這個servlet類。<servlet-mapping>標簽可定義servlet映射,裏面的<servlet-name>必須與前面的名字一致,<url-pattern>指定servlet映射的路徑。
在用Tomcat啟動整個web項目時,當配置了<load-on-startup>標簽並且裏面的數字>=0時,會加載此servlet類,創建類的實例,調用init()方法初始化<init-param>標簽裏面的配置信息,此初始化在整個servlet生命周期中只會進行一次。如果未配置<load-on-startup>標簽或數字<0時,Tomcat啟動時不會加載此servlet類,當然也就不會調用init()方法進行初始化,當用戶首次訪問時會加載類並初始化,所以此時第一次訪問時可能會加載很慢。這裏僅簡單介紹標簽的作用,以後我會詳細介紹這個servlet類以及與其相關的幾個比較重要的類和接口。
session配置
<session-config> <session-timeout>10</session-timeout> </session-config>
<session-config>標簽用於設置瀏覽器與服務器之間會話(交互)時長的間隔,以分鐘為單位。用戶訪問Web項目時,會與服務器之間建立一個session,當用戶長時間未與服務器信息交互而超過這個時長時,服務器會銷毀這個session,釋放占用的內存空間,當用戶再次在原來的session訪問時會失效,需要重新建立新的session。除了可以設置這個標簽之外,還可通過HttpSession的setMaxInactiveInterval()方法設置單個會話對象的超時值。
其他配置
參考https://www.cnblogs.com/hafiz/p/5715523.html
15. web.xml的配置