Spring MVC的DispatcherServlet
Spring MVC提供了一個名為org.springframework.web.servlet.DispatcherServlet的Selvet充當前端控制器,所有的請求驅動都圍繞這個DispatcherServlet來分派請求。
DispatcherServlet是一個Servlet(繼承自HttpSerlvet基類),因此使用時需要把它配置在Web應用的部署描述web.xml中
<servlet> <!-- Serlvet的名稱 --> <servlet-name>springmvc</servlet-name> <!--Serlvet對應的java類 --> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!-- 當前Serlvet的參數信息 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc-config.xml</param-value> </init-param> <!-- 在Web應用啟動時立即加載Serlvet --> <load-on-startup>1</load-on-startup> </servlet> <!-- 讓Spring MVC的前端控制器攔截所有請求 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
該Servlet在Web應用程序啟動時立即加載,DispatcherServlet加載時需要一個Spring MVC的配置文件,默認情況下,應用會去應用文件夾的WEB-INF下查找對應的[servlet-name]-servlet.xml文件(例如本例中的<serlvet-name>是springmvc,默認查找的是/WEB-INF/springmvc-serlvet.xml)
也可以把Spring MVC的配置文件放到應用程序文件夾的任何地方,用Serlvet元素的init-param子元素進行描述,本例的param-name元素的值contextConfigLocation表示參數名稱,param-value元素的值/WEB-INF/springmvc-config.xml則表示Spring MVC的配置文件路徑和名稱。則DispatcherServlet會查找/WEB-INF/springmvc-config.xml文件,作為Spring MVC的配置文件。解析該文件內容並根據文件配置信息創建一個WebApplicationContext容器對象,也稱為上下文環境。WebApplicationContext繼承自ApplicationContext容器,它的初始化方式和BeanFactory,ApplicationContext 有所區別,因為WebApplicationContext需要SerlvetContext實例,它必須是在擁有Web容器的前提下才能完成啟動Spring Web應用上下文的工作。有了WebApplicationContext容器,開發者就可以很自然的使用Spring IOC,AOP等其他功能。
Spring MVC的DispatcherServlet