SpringMVC xml文件路徑在web.xml中的配置方式
SpringMVC xml文件路徑在web.xml中的配置
正常情況下springmvc的xml文件應放在WEB-INF下,命名規則為[name]-servlet.xml, “-servlet”這個字段是必不可少的 [name]你可以隨便命名 ,同時你的web.xml文件中兩個servlet要和你的name相同,不然會報錯的。
springmvc-servlet.xml在web.xml中的文件路徑配置
放在src目錄下,則需要手動配置springmvc-servlet.xml路徑,命名不再有限制,文件路徑正確並且兩個 <servlet-name> 相同即可。springmvc-servlet.xml在web.xml中的文件路徑配置
註:此處在作者電腦上<param-value>的當前路徑在resources下,可以通過”./” 測試當前路徑在哪。
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 配置文件的路徑 默認為 /WEB-INF/<[servlet-name]-servlet.xml> 例如此處為/WEB-INF/spring-servlet.xml 下面配置的也就是默認值 --> <param-value>classpath:config/spring-servlet.xml</param-value> </init-param> <!-- 配置隨服務器啟動自動初始化 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <!-- 過濾所有後綴名為.do的請求 --> <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 配置文件的路徑 默認為 /WEB-INF/<[servlet-name]-servlet.xml> 例如此處為/WEB-INF/spring-servlet.xml 下面配置的也就是默認值 --> <param-value>classpath*:config/spring-servlet.xml</param-value> </init-param> <!-- 配置隨服務器啟動自動初始化 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <!-- 過濾所有後綴名為.do的請求 --> <url-pattern>*.do</url-pattern> </servlet-mapping>
1.3.Classpath是什麼
設置Classpath的目的,在於告訴Java執行環境,在哪些目錄下可以找到您所要執行的Java程序所需要的類或者包。
classpath是指 WEB-INF文件夾下的classes目錄 ,將web應用發佈到服務器時,會將src目錄下所有的類編譯後的class文件和資源文件放入到WEB-INF文件夾下的classes目錄。
1.4.Classpath和classpath*的區別
classpath
:隻會到你的class路徑中查找找文件。classpath*
:不僅包含class路徑,還包括jar文件中(class路徑)進行查找。
1) 前者隻會從第一個classpath中加載,而後者會從所有的classpath中加載 。
2) 如果要加載的資源, 不在當前ClassLoader的路徑裡,那麼用classpath:前綴是找不到的, 這種情況下就需要使用classpath*:前綴。
3) 在多個classpath中存在同名資源,都需要加載, 那麼用classpath:隻會加載第一個,這種情況下也需要用classpath*:前綴。
4) 用classpath*:需要遍歷所有的classpath,所以加載速度是很慢的,因此,在規劃的時候,應該盡可能規劃好資源文件所在的路徑,盡量避免使用classpath*。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- SpringMVC執行步驟、Model的使用詳解
- Java web.xml之contextConfigLocation作用案例詳解
- Springmvc工程跳轉controller無效的解決
- 關於springmvc報錯404的問題
- 詳解spring mvc中url-pattern的寫法