1.直接使用SpringMVC是可以不 添加applicationContext.xml文件的。
使用applicationContext.xml
文件時是需要在web.xml
中添加listener
的:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
而這個一般是采用非spring mvc
架構,如使用struts
之類而又想引入spring
才添加的,這個是用來加載Application Context
。
如果直接采用SpringMVC
,只需要把所有相關配置放到xxx-servlet.xml
中就OK了。
2. springMVC
設計的基本架構
SpringMVC
的配置分為兩部分application.xml
和spring-servlet.xml
- 兩個配置文件的作用和配置位置
2.1.application.xml
:對應的是系統級別的配置,作用范圍是系統上下文。
2.2.spring-servlet.xml
:對應的是controller
級別的配置,作用范圍是控制層上下文。- 它們在
web.xml
中的配置
3.1.因為application.xml
是系統級別的上下文,所以它的初始化需要放到web.xml
中的<context-param>
標簽中,同時其他的類似定時任務的配置文件等等都是放在這個標簽下進行初始化的。
3.2.因為spring-servlet.xml
只是controller
級別的上下文,說白了就是servlet
級別的初始化,它不涉及到除了轉發之外的任何實體,所以它的作用范圍僅僅限制在servlet
級別,所以它的初始化應該是跟spring
的DispatcherServlet
初始化在一起,所以就是在<servlet>
表情中初始化的。它有一個默認值就是【/WEB-INF/remoting-servlet.xml 】
,注意配置文件的對應的名稱是【 servlet-name】-servlet.xml
。
比如:以下配置中 DispatcherServlet對應的直接配置了對應的spring-servlet.xml
, 也可以不配置,但是默認會找springmvc-servlet.xml
,對應<servlet-name>springmvc</servlet-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<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-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
所以如果你沒有給
servlet
制定配置文件的位置,并且在默認位置下也沒有配置文件,那么系統啟動的時候就會報錯。
注意:對于 servlet配置文件里面應該初始化的東西,除了視圖的解析方式、靜態資源文件的存放位置、controller的初始化方式之外,其他的都不應該放在 servlet 配置文件中,應為它只負責 請求的轉發,返回結果的解析以及靜態資源文件的解析,其他的對象的初始化,定時任務...都不應該放到這個配置文件下進行管理。