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。

推薦閱讀: