SpringMVC xml文件路徑在web.xml中的配置
正常情況下springmvc的xml文件應(yīng)放在WEB-INF下,命名規(guī)則為[name]-servlet.xml, “-servlet”這個(gè)字段是必不可少的 [name]你可以隨便命名 ,同時(shí)你的web.xml文件中兩個(gè)servlet要和你的name相同,不然會(huì)報(bào)錯(cuò)的。
springmvc-servlet.xml在web.xml中的文件路徑配置
放在src目錄下,則需要手動(dòng)配置springmvc-servlet.xml路徑,命名不再有限制,文件路徑正確并且兩個(gè) <servlet-name> 相同即可。springmvc-servlet.xml在web.xml中的文件路徑配置
注:此處在作者電腦上<param-value>的當(dāng)前路徑在resources下,可以通過(guò)"./" 測(cè)試當(dāng)前路徑在哪。
SpringMVC 修改配置文件路徑
1.1.Classpath
工程目錄
在web.xml文件如下配置:
<!-- 配置spring mvc 的核心servlet --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!-- 指定spring mvc 配置文件的路徑 默認(rèn)為 /WEB-INF/<[servlet-name]-servlet.xml> 例如此處為/WEB-INF/spring-servlet.xml 下面配置的也就是默認(rèn)值 --> <param-value>classpath:config/spring-servlet.xml</param-value> </init-param> <!-- 配置隨服務(wù)器啟動(dòng)自動(dòng)初始化 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <!-- 過(guò)濾所有后綴名為.do的請(qǐng)求 --> <url-pattern>*.do</url-pattern> </servlet-mapping>
1.2.Classpath*
工程目錄跟上面一樣
Web.xml文件中如下配置:
<!-- 配置spring mvc 的核心servlet --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!-- 指定spring mvc 配置文件的路徑 默認(rèn)為 /WEB-INF/<[servlet-name]-servlet.xml> 例如此處為/WEB-INF/spring-servlet.xml 下面配置的也就是默認(rèn)值 --> <param-value>classpath*:config/spring-servlet.xml</param-value> </init-param> <!-- 配置隨服務(wù)器啟動(dòng)自動(dòng)初始化 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <!-- 過(guò)濾所有后綴名為.do的請(qǐng)求 --> <url-pattern>*.do</url-pattern> </servlet-mapping>
1.3.Classpath是什么
設(shè)置Classpath的目的,在于告訴Java執(zhí)行環(huán)境,在哪些目錄下可以找到您所要執(zhí)行的Java程序所需要的類(lèi)或者包。
classpath是指 WEB-INF文件夾下的classes目錄 ,將web應(yīng)用發(fā)布到服務(wù)器時(shí),會(huì)將src目錄下所有的類(lèi)編譯后的class文件和資源文件放入到WEB-INF文件夾下的classes目錄。
1.4.Classpath和classpath*的區(qū)別
-
classpath
:只會(huì)到你的class路徑中查找找文件。 -
classpath*
:不僅包含class路徑,還包括jar文件中(class路徑)進(jìn)行查找。
1) 前者只會(huì)從第一個(gè)classpath中加載,而后者會(huì)從所有的classpath中加載 。
2) 如果要加載的資源, 不在當(dāng)前ClassLoader的路徑里,那么用classpath:前綴是找不到的, 這種情況下就需要使用classpath*:前綴。
3) 在多個(gè)classpath中存在同名資源,都需要加載, 那么用classpath:只會(huì)加載第一個(gè),這種情況下也需要用classpath*:前綴。
4) 用classpath*:需要遍歷所有的classpath,所以加載速度是很慢的,因此,在規(guī)劃的時(shí)候,應(yīng)該盡可能規(guī)劃好資源文件所在的路徑,盡量避免使用classpath*。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/qq_41611829/article/details/103088079