前言
針對一個項目而言,通常會有幾類XML文件需要書寫。
- web.xml
- spring-context.xml
- spring-mvc.xml
- other.xml
- ...
不管有多少配置文件,可以肯定的一點,這些配置文件,都是在web.xml中被指定的。
后續慢慢闡述。
web.xml
web.xml可以理解為一個Java Web項目入口。在web.xml中通常會有如下幾種類型的節點存在,按照加載順序排列。
Listener
此為監聽器,在上面3個中是后弦加載的,表示監聽某個動作是否發生,發生后要進行什么動作。
監聽--就是在進行某種各個范圍(application,session,request)中有相關值的設置、修改、替換的時候,這些操作都會觸發事件,而Java中事件的代理機制,事件處理是利用listener機制,所以為了在事件觸發的時候能夠使自己能夠采取相應的措施,就需要---->繼承這樣的listener,在listener中覆寫相應的方法,覆寫相應的事件處理方法,在對應的方法中處理對應的事件,也就是進行了監聽
參考鏈接:安卓中監聽者模式
在Java Web中,監聽對象通常有3個:
- ServletContext(Spring中關於ServletContext對類簽名如下:
public class ContextLoaderListener extends ContextLoader implements ServletContextListener { ..... }
- Request
- Session
Spring的監聽器需要設置context-param來指定Spring配置文件的路徑。
<!-- 1. Spring自動掃描 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:spring/application-*.xml classpath*:spring/webservice.xml </param-value> </context-param>
Filter
此為過濾器,為第二個加載的。任何一個被指定的路徑,都需要經過這個過濾器過濾。通常使用到Filter有:
- 編碼轉換過濾器
- 安全處理XSS、SQL注入攔截過濾器
- 為支持而創建的Put過濾器
- 數據連接池Druid過濾器
- 。。。
<filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Servlet
Servlet是三類中最后加載的,通常就是作為控制層存在,在SSM中屬於SpringMVC中進行管理的。
<!-- 2. SpringMVC配置 --> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此處可以可以配置成 *.do ,對應struts的后綴習慣 --> <url-pattern>/</url-pattern> </servlet-mapping>