SpringMVC之DispatcherServlet配置文件應(yīng)該放在哪里呢
DispatcherServlet配置文件應(yīng)該放在哪里
DispatcherServlet是前置控制器,配置在web.xml文件中的。攔截匹配的請求,Servlet攔截匹配規(guī)則要自己定義,把攔截下來的請求,依據(jù)相應(yīng)的規(guī)則分發(fā)到目標(biāo)Controller來處理,是配置spring MVC的第一步。
但是,我們在搭建SpringMVC框架時,往往總是把DispatcherServlet的配置文件放錯位置。
網(wǎng)上有的說:springDispatcherServletMVC-servlet.xml(暫且命名這么一個springDispatcherServletMVC的dispatchservlet配置文件)應(yīng)該放在WEB-INF下面(與web.xml放一起);
有的說:應(yīng)該直接把springDispatcherServletMVC-servlet.xml放在src文件夾下面;
有的說:在java resources下面新建一個config的resource folder,把配置文件都放在這個資源文件夾下面。那么到底哪種是正確的呢?
答案是:這個要根據(jù)web.xml中DispatcherServlet的配置聲明有關(guān)系。
第一種情況
當(dāng)web.xml中DispatcherServlet配置聲明中,沒有明確DispatcherServlet前端控制器配置文件的位置時,則系統(tǒng)默認(rèn)DispatcherServlet前端控制器配置文件放在WEB-INF文件夾下。
例如:

web.xml部分代碼如下:
<!--信息轉(zhuǎn)發(fā)器,該servlet名為mvc-dispatcher(名稱可修改,但必須與mvc-dispatcher-servlert.xml的前綴名相同),用于攔截請求(url-pattern為 / ,說明攔截所有請求),并交由Spring MVC的后臺控制器來處理。這一項配置是必須的-->
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>上面代碼聲明了一個命名為mvc-dispatchert的前端控制器(DispatcherServlet),并且沒有指定該servlet配置文件的路徑,那么系統(tǒng)將以默認(rèn)名字mvc-dispatcher-servlet.xml在默認(rèn)路徑/WEB-INF下尋找它,位置不正確,名字不正確,都會報錯。
第二種情況
當(dāng)web.xml中DispatcherServlet配置聲明中,已經(jīng)明確DispatcherServlet前端控制器配置文件的位置時,則必須將前端控制器的配置文件放在src下面,不能放在webcontent(webapp)下了,當(dāng)然,在src的各級子文件夾中也是可以的。
一般放在java resources下面,或者在resources下新建一個config的文件夾專門用來存放配置文件,文件結(jié)構(gòu)如下:

web.xml部分代碼如下:
<!--信息轉(zhuǎn)發(fā)器,該servlet配置文件存放在/resources/config下,用于攔截請求(url-pattern為 / ,說明攔截所有請求),并交由Spring MVC的
后臺控制器來處理。這一項配置是必須的-->
<servlet>
<servlet-name>mvc-dispatcherhahaha</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/mvc-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcherhahaha</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>上面代碼中,明確了contextConfigLocation的地址為:classpath:(即在classes文件夾下面)。
并且請注意,此處我估計將配置文件中的servlet類命名為mvc-dispatcherhahaha,就是為了與配置文件名稱mvc-dispatcher-servlet.xml區(qū)分開來,因此可以看出,此處命名是任意的,只需再位置參數(shù)init-param中體現(xiàn)出來即可。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于CommandLineRunner的使用詳解
本文介紹了如何在SpringBoot項目啟動時使用CommandLineRunner和ApplicationRunner接口進(jìn)行數(shù)據(jù)預(yù)加載或操作,通過實現(xiàn)這兩個接口,可以在項目啟動時執(zhí)行特定的任務(wù),同時,還展示了如何使用@Order注解來控制多個實現(xiàn)類的加載順序2024-12-12
Java17新特性之Switch表達(dá)式改進(jìn)的使用小結(jié)
Java17對??switch??表達(dá)式進(jìn)行了進(jìn)一步改進(jìn),使其更加簡潔、直觀,并支持更現(xiàn)代的編程風(fēng)格,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下2025-10-10
Mapper層繼承BaseMapper<T>需要引入的pom依賴方式
這篇文章主要介紹了Mapper層繼承BaseMapper<T>需要引入的pom依賴方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Spring Security與JWT實現(xiàn)微服務(wù)安全認(rèn)證的方法
本文詳細(xì)介紹了在Spring Cloud微服務(wù)架構(gòu)中使用Spring Security和JWT實現(xiàn)安全認(rèn)證的完整方案,通過合理的架構(gòu)設(shè)計、安全的實現(xiàn)方式和完善的防護措施,可以構(gòu)建一個安全、可靠的微服務(wù)認(rèn)證系統(tǒng),本文介紹的非常詳細(xì),感興趣的朋友一起看看吧2026-01-01
Java實現(xiàn)讀取CSV文件數(shù)據(jù)內(nèi)容(含逗號處理)
這篇文章主要為大家詳細(xì)介紹了如何使用Java實現(xiàn)讀取CSV文件數(shù)據(jù)內(nèi)容,包含了逗號處理,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-07-07
springboot + elasticsearch 實現(xiàn)聚合查詢的詳細(xì)代碼
文章介紹了如何在Spring Boot 2.2.6中使用Elasticsearch進(jìn)行聚合查詢,重點在于通過API創(chuàng)建索引和映射,而不是使用Spring Data Elasticsearch的自動創(chuàng)建功能,文章還提到在創(chuàng)建映射時,Elasticsearch會自動為keyword類型添加keyword屬性,感興趣的朋友一起看看吧2025-02-02

