本文會對web.xml中的各種參數進行一一詳解,如有不對的地方,請大家指出來。
1.ContextLoaderListener
<servlet>
<servlet-name>portal</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
作用:
- 在啓動Web容器時,自動裝配Spring applicationContext.xml的配置信息。
2.contextConfigLocation
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
功能:
- contextConfigLocation是指定的applicationContext.xml文件的加載路徑,可以不配置,默認是/WEB-INF/applicationContext。配置後則會去加載相應的xml,而不會去加載/WEB-INF/下的applicationContext.xml。
3.classpath:和classpath*:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
這一段配置應該是大家web.xml中都有的配置,ServletContext初始化參數
- classpath:只會到你的class路徑中查找找文件;
- classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進行查找. -
<param-value>classpath*:applicationContext.xml,
classpath*:app-datasource.xml,
classpath*:app-memcached.xml
</param-value>
4.DispatcherServlet
<servlet>
<servlet-name>portal</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:webmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>portal</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
DispatcherServlet:
1、文件上傳解析,如果請求類型是multipart將通過MultipartResolver進行文件上傳解析;
2、通過HandlerMapping,將請求映射到處理器(返回一個HandlerExecutionChain,它包括一個處理器、多個HandlerInterceptor攔截器);
3、通過HandlerAdapter支持多種類型的處理器(HandlerExecutionChain中的處理器);
4、通過ViewResolver解析邏輯視圖名到具體視圖實現;
5、本地化解析;
6、渲染具體的視圖等;
7、如果執行過程中遇到異常將交給HandlerExceptionResolver來解析。load-on-startup:表示啓動容器時初始化該Servlet;
- url-pattern:表示哪些請求交給Spring Web MVC處理, “/” 是用來定義默認servlet映射的。也可以如“*.html”表示攔截所有以html爲擴展名的請求。
5.CharacterEncodingFilter
解決編碼不統一的問題
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported><!--異步支持 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>