springMvc放行静态资源的多种方式

本文介绍了Spring MVC中三种不同的方法来放行静态资源:通过springMvc-servlet.xml配置,web.xml中单独配置静态资源路径,以及修改DispatcherServlet的url-pattern。详细解释了每种方式的工作原理和可能的影响,如拦截器配置和访问路径的改变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提条件是在web.xml种配置的DispatcherServlet如下url-pattern为 /

<!--配置dispatcherServlet-->
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

方式一

在springMvc-servlet.xml中配置

 <mvc:annotation-driven />
 <mvc:resources location="/img/" mapping="/img/**"/>   
 <mvc:resources location="/js/" mapping="/js/**"/>    
 <mvc:resources location="/css/" mapping="/css/**"/>  

说明:

location元素表示webapp目录下的static包下的所有文件;

mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b;

该配置的作用是:DispatcherServlet不会拦截以/static开头的所有请求路径,并当作静态资源

交由Servlet处理。

如果springmvc-servlet.xml中配置了拦截器,有可能会影响放行静态资源

如下所示,<mvc:exclude-mapping path="/html/**"/> 配置拦截器配置不拦截/html/**下的所有资源

    <mvc:interceptors>
        <mvc:interceptor>
            <!--
                /**的意思是所有文件夹及里面的子文件夹
                /*是所有文件夹,不含子文件夹
                /是web项目的根目录
            -->
            <mvc:mapping path="/**" />
            <mvc:exclude-mapping path="/html/**"/>
            <bean id="loginInterceptor" class="com.omp.comm.interceptor.LoginInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

    <mvc:resources mapping="/html/**" location="/html/"/>

方式二

在web.xml中配置如下如下内容,把涉及到的静态资源都配置一遍

<servlet-mapping>
	<servlet-name>default</servlet-name>
	<url-pattern>*.css</url-pattern>
	<url-pattern>*.js</url-pattern>
	<url-pattern>*.ico</url-pattern>
	<url-pattern>*.swf</url-pattern>
	<url-pattern>*.gif</url-pattern>
	<url-pattern>*.jpeg</url-pattern>
	<url-pattern>*.bmp</url-pattern>
	<url-pattern>*.psd</url-pattern>
	<url-pattern>*.jpg</url-pattern>
	<url-pattern>*.png</url-pattern>
	<url-pattern>*.htm</url-pattern>
	<url-pattern>*.html</url-pattern>
	<url-pattern>*.crx</url-pattern>
	<url-pattern>*.xpi</url-pattern>
	<url-pattern>*.exe</url-pattern>
	<url-pattern>*.ipa</url-pattern>
	<url-pattern>*.apk</url-pattern>
	<url-pattern>*.htc</url-pattern>
</servlet-mapping>

或者把静态资源都放到resources文件夹内,如果文件夹中含有jsp界面,访问的时候将会只返现源码,可以正常访问html

<servlet-mapping>  
<servlet-name>default</servlet-name>  
<url-pattern>/resources/*</url-pattern>  
</servlet-mapping>  

方式三

由于配置了<url-pattern>/</url-pattern>才把静态资源给拦截了,所以,我们可以在这里把资源路径改下,<url-pattern>/omp/*</url-pattern>,如果访问后台的话都需要带上这个/omp,这样静态资源就不会拦截了。

或者使用<url-pattern>*.do</url-pattern>的方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值