Spring MVC禁止对CSS,JS,IMAGE等静态资源过滤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC禁止对CSS,JS,IMAGE等静态资源过滤相关的知识,希望对你有一定的参考价值。

参考技术A

在使用Spring MVC时,我们默认对过滤器是这样子设置:
<code>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>

<url-pattern>/</url-pattern>
</servlet-mapping>
</code>
这样的后果就是会对所有的资源一起过滤了,导致我们的jsp中的图片,js,css什么都加载不出来。如图所示:

所以只要我们在spring-web.xml(你配置你的Spring-MVC的配置文件中添加):
<code>
<mvc:resources location="/WEB-INF/jsp/css/" mapping="/css/ " />
<mvc:resources location="/WEB-INF/jsp/fonts/" mapping="/fonts/
" />
<mvc:resources location="/WEB-INF/jsp/images/" mapping="/images/ " />
<mvc:resources location="/WEB-INF/jsp/js/" mapping="/js/
"/>
</code>
有些人可能不知道路径怎么写,可以参考我的:

现在设置后看看资源还有没有被拦截:

很好没被拦截了!

Spring MVC 拦截 js,css,png 等资源

springMVC的<mvc:resources mapping="***" location="***">标签是在spring3.0.4出现的,主要是用来定义对静态资源的访问。 
上网搜了一下跟这个配置相关的文章,大多推荐用下面这种。可是,用这种的话,如果有一个新目录,就得新增一条配置,比较麻烦。 

<!-- For static resources -->  
<mvc:resources mapping="/image/**" location="/images/" />  
<mvc:resources mapping="/js/**" location="/js/" />  
<mvc:resources mapping="/css/**" location="/css/" />  
<mvc:resources mapping="/html/**" location="/html/" />  
<mvc:resources mapping="/software/**" location="/software/" />  


下面这种是直接根据静态文件的后缀来配置的,比较通用,不用为每个子目录配置一个: 

	<mvc:resources location="/" mapping="/**/*.html"/>
	<mvc:resources location="/" mapping="/**/*.js"/>
	<mvc:resources location="/" mapping="/**/*.css"/>
	<mvc:resources location="/" mapping="/**/*.png"/>
	<mvc:resources location="/" mapping="/**/*.gif"/>


(原创文章,转载请注明转自Clement-Xu的csdn博客。) 
版权声明:本文为原创文章,转载请注明转自Clement-Xu的csdn博客。 

 


 

 

来源:http://blog.csdn.net/tlin2011/article/details/45482463

spring mvc 配置为:

<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

时,当直接访问png,jpg等资源时,也会拦截,  web.xml 加入如下配置  则web服务器会处理,不会被spring 拦截

亲测:

<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>*.css</url-pattern>        
</servlet-mapping>

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

 

另外: 不知为何加入<mvc:resources mapping="/images/**" location="/images/" />  可以访问资源,但是访问不了 controller了

以上是关于Spring MVC禁止对CSS,JS,IMAGE等静态资源过滤的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC 拦截 js,css,png 等资源

spring mvc访问静态资源的问题, .js .jpg .css

spring mvc 访问不到 js css

Spring MVC - 包含静态文件/javascript、css

如何使用 Spring MVC 在 JSP 中包含 js 和 CSS

在Spring MVC中管理HTML资源(CSS,JS文件)