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