springmvc中的spring-servlet.xml 和 applicationContext.xml,為什么spring-servlet.xml沒有被直接引用的代碼

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)

  1. SpringMVC的配置分為兩部分application.xmlspring-servlet.xml
  2. 兩個(gè)配置文件的作用和配置位置
    2.1.application.xml :對(duì)應(yīng)的是系統(tǒng)級(jí)別的配置,作用范圍是系統(tǒng)上下文。
    2.2.spring-servlet.xml:對(duì)應(yīng)的是 controller 級(jí)別的配置,作用范圍是控制層上下文。
  3. 它們?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)該是跟springDispatcherServlet初始化在一起,所以就是在<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)行管理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容