1. 程式人生 > >6.Spring MVC靜態資源訪問

6.Spring MVC靜態資源訪問

cati 解決 fault 是我 直接 mage 所有 param 進行

在SpringMVC中常用的就是Controller與View。但是我們常常會需要訪問靜態資源,如html,js,css,image等。

默認的訪問的URL都會被DispatcherServlet所攔截,但是我們希望靜態資源可以直接訪問。該腫麽辦呢?

在配置文件:web.xml可以看到:

<!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>
org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </init-param> <
load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

靜態資源訪問,其實方法有多種,如:通過開放tomcat的defaultServlet,修改默認的url-parttern。

但是SpringMVC提供了更為便捷的方式處理靜態資源。

解決方案:

直接在spring-mvc.xml中添加資源映射。

<!-- 3.靜態資源由WEB服務器默認的Servlet來處理 -->
    <mvc:default-servlet-handler/>
    
    <!-- 4.添加靜態資源映射 -->
   <mvc:resources mapping="/error/**" location="/error/" />

<mvc:default-servlet-handler/>:一定要配置,否則後面的映射會失效

mapping:映射

location:本地資源路徑,註意必須是webapp根目錄下的路徑。

兩個*,它表示映射resources/下所有的URL,包括子路徑(即接多個/)

這樣我們就可以直接訪問該文件夾下的靜態內容了。

陷阱:

配置的location一定要是webapp根目錄下才行,如果你將資源目錄,放置到webapp/WEB-INF下面的話,則就會訪問失敗。這個問題常常會犯。

WEB-INF目錄作用

WEB-INF是Java的WEB應用的安全目錄。所謂安全就是客戶端無法訪問,只有服務端可以訪問的目錄。 如果想在頁面中直接訪問其中的文件,必須通過web.xml文件對要訪問的文件進行相應映射才能訪問。 當然,你非要放在WEB-INF中,則必須修改resources映射,如:
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />

<!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
        
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

6.Spring MVC靜態資源訪問