依本身目前的所聞所見,每一個項目的WEB-INF下都會帶有一個web.xml配置文件。當啓動項目時,web容器(tomcat)會首先去讀取web.xml中的內容,讀取加載完成後纔算完成了項目的啓動。 css
整體結構以下html
<?xml version="1.0" encoding="UTF-8"?> <web-app 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_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Archetype Created Web Application</display-name> <!--在這裏配置--> </web-app>
頭部 : schema 引用java
<web-app>:具體配置配置在此標籤內,以下常見配配置項web
1. <context-param>:配置上下文的初始參數spring
<!--容器在啓動時就加載spring的配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <context-param> <param-name>name</param-name> <param-value>小明</param-value> </context-param>
參數會加載到 context——>parameters中sql
此時能夠在controller中利用如下方法獲取數據庫
@RequestMapping("/home") public String home(HttpServletRequest request){ String name = request.getServletContext().getInitParameter("name"); System.out.println(name+"_______________________"); return "/index2"; }
2.<listener>:配置監聽器api
<!--spring 啓動IOC容器的監聽器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
3.<servlet>:配置servlettomcat
<!--spring mvc 的DispatcherServlet--> <servlet> <servlet-name>enterprise-servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--spring mvc 的 配置文件,若是配置文件名和servlet-name相同則不須要此配置--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:enterprise-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <!--對文件上傳的限制--> <multipart-config> <max-file-size>52428800</max-file-size> <max-request-size>52428800</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config> </servlet> <servlet-mapping> <servlet-name>enterprise-servlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
也可單獨使用,使用默認servlet加載靜態資源session
<!--tomcat默認servlet爲default--> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/*.css</url-pattern> </servlet-mapping>
4.<filter>:配置過濾器
<!--配置字符編碼過濾器--> <!--字符編碼過濾器必需要配置在全部過濾器前面--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
5.<session-config>:配置session過時時間
<!--session的過時時間,單位爲分鐘,優先級 servlet api(setMaxInactiveInterval(秒))—> 項目/web.xml—>tomcat/web.xml--> <session-config> <session-timeout>30</session-timeout> </session-config>
6.<error-page>:配置錯誤跳轉頁面
<!--當頁面訪問不存在的請求時就跳轉到404.jsp頁面--> <error-page> <error-code>404</error-code> <location>/WEB-INF/pages/error/404.jsp</location> </error-page>
7.<resource-ref>:配置JNDI數據源
<resource-ref> <description>DHCP數據庫鏈接池</description> <res-ref-name>jdbc/microDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
此處可參看:這裏 查看如何實現利用JNDI實現數據庫鏈接。
加載順序:會先讀取<context-param>和<listener>兩個節點
——>建立servletContext,將<context-param>的鍵值對交給servletContext
——>建立listener的類實例
——>filter
——>servlet(load-on-startup:標記容器是否在啓動的時候就加載這個servlet,越小越先執行(0-正整數),負數或不配置則等到調用該servlet時才加載)