1. 程式人生 > >用了springmvc為何JS,CSS等文件就是訪問不到

用了springmvc為何JS,CSS等文件就是訪問不到

開頭 pre view 請求 映射 span pan -s clas

那就是為什麽我配置好web.xml中的dispatchservlet後,js,css,甚至gif都不能正常顯示了

我們來看看我們配置的web.xml

 1     <!-- springMVC核心配置      controller,viewResolver,HandlerMapping -->
 2     <servlet>
 3         <servlet-name>dispatcherServlet</servlet-name>
 4         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class
> 5 <init-param> 6 <param-name>contextConfigLocation</param-name> 7 <!--spingMVC的配置路徑 --> 8 <param-value>classpath:spring-mvc.xml</param-value> 9 </init-param> 10 <load-on-startup>1</load-on-startup> 11
</servlet> 12 <servlet-mapping> 13 <servlet-name>dispatcherServlet</servlet-name> 14 <url-pattern>/</url-pattern> 15 </servlet-mapping>

這個就涉及到一個知識點了,就是url-pattern的 / 和 * 的區別了

這裏我來引用一段別人的原話

url-pattern有5種配置模式:

(1)/xxx:完全匹配/xxx的路徑

(2)/xxx/*:匹配以/xxx開頭的路徑,請求中必須包含xxx。

(3)/*:匹配/下的所有路徑,請求可以進入到action或controller,但是轉發jsp時再次被攔截,不能訪問jsp界面。

(4).xx:匹配以xx結尾的路徑,所有請求必須以.xx結尾,但不會影響訪問靜態文件。

(5)/:默認模式,未被匹配的路徑都將映射到刺servlet,對jpg,js,css等靜態文件也將被攔截,不能訪問。

因此,如果我們一開始就采用了/的方式,那麽就需要補上如下的web.xml配置來讓靜態文件可訪問了

<!-- static resources -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>

    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

用了springmvc為何JS,CSS等文件就是訪問不到