静态资源过滤方式补充

昨天写过一篇

更改静态资源过滤方式。

在写 mvc:resources 配置,少写了一些。因此,在项目访问时,报错404.

 <!-- 过滤静态资源 -->
	<mvc:resources mapping="/js/**" location="/js/" />
	<mvc:resources mapping="/pages/assets/**" location="/pages/assets/" />
	<mvc:resources mapping="/pages/js/**" location="/pages/js/" />
	<mvc:annotation-driven/>
	<mvc:default-servlet-handler/> 

上面三个是过滤静态资源,而下面两个,分别是:

1、<!-- 启用spring mvc 注解 -->

mvc:annotation-driven:

参考文章地址:

http://blog.csdn.net/jbgtwang/article/details/7359592

描述是:

最后的配置如果没有<mvc:annotation-driven/>,那么所有的Controller可能就没有解析,所有当有请求时候都没有匹配的处理请求类,就都去<mvc:default-servlet-handler/>即default
servlet处理了。添加上<mvc:annotation-driven/>后,相应的do请求被Controller处理,而静态资源因为没有相应的Controller就会被default servlet处理。总之没有相应的Controller就会被default servlet处理就ok了。

要使用spring mvc中的@Controller注解,就必须要配置<mvc:annotation-driven
/>,否则org.springframework.web.servlet.DispatcherServlet无法找到控制器并把请求分发到控制器。

2、<!-- 配置默认servlet handler -->

mvc:default-servlet-handler:

参考文章:Spring MVC使用mvc:resources和mvc:default-servlet-handler标签来处理静态资源

下面一段文字,为完全复制:

<mvc:default-servlet-handler />会把/** url注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回。DefaultServletHttpRequestHandler使用的就是各个Servlet容器自己默认的Servlet。

也就是说,在springMVC中,mvc:default-servlet-handler,等同于
在web.xml中配置default。

***********************************************************分割线***********************************************************

在web.xml中配置拦截的方式, 激活Tomcat的defaultServlet来处理静态文件      在web.xml中配置default是有缺点的,暂时忘记缺点是什么了,以后补记。

web.xml,是由tomcat加载,来进行筛选过滤的。

参考文章:

http://blog.sina.com.cn/s/blog_6fda308501018iyu.html

tomcat缓存静态资源深入

是针对 tomcat,WebLogic等,不同服务器,配置是不同的。

在web.xml中 的 default ,是针对tomcat 服务器的配置。

要写在DispatcherServlet的前面, 让 defaultServlet先拦截,这个就不会进入Spring了 

Tomcat, Jetty, JBoss, and GlassFish  默认 Servlet的名字 -- "default"
Google App Engine 默认 Servlet的名字 -- "_ah_default"
Resin 默认 Servlet的名字 -- "resin-file"
WebLogic 默认 Servlet的名字  -- "FileServlet"
WebSphere  默认 Servlet的名字 -- "SimpleFileServlet" 

时间: 2024-11-03 01:43:28

静态资源过滤方式补充的相关文章

更改静态资源过滤方式。

项目中,考虑了3种过滤资源方式. 1.在web.xml中过滤. 配置如下: <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocat

SpringMVC访问静态资源的三种方式

 如果你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截"/",拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了. 问题原因:罪魁祸首是web.xml下对spring的DispatcherServlet请求url映射的配置,原配置如下: [html] view plain copy   <servlet>       <servlet-name>sprin

Spring MVC中如何防止静态资源被Interceptor过滤

问题描述 我的配置是web.xml<servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name>

自定义Filter过滤静态资源

在springMVC中,可以通过配置来过滤静态资源, 也可以在web.xml中进行配置,通过自定义Filter来实现. web.xml配置如下. <filter> <filter-name>securityFilter</filter-name> <filter-class>com.wswhr.SecurityFilter</filter-class> <init-param> <param-name>ignores<

spring mvc-filter如何对静态资源.css/.js/.jpg不进行过滤

问题描述 filter如何对静态资源.css/.js/.jpg不进行过滤 1C web.xml中filter配置 <filter> <filter-name>loginFilter</filter-name> <filter-class>com.cbt.Interceptor.LoginFilter</filter-class> <init-param> <param-name>loginPage</param-na

js文件-springmvc 静态资源 404问题

问题描述 springmvc 静态资源 404问题 项目根目录结构: Web.xml中配置 Spring-sevlet.Xml中配置 首页JSP中调用外部文件 该链接按中Ctrl后再点击,可访问. 之后依旧无法调用JS文件,跪求大神!!!!!!! 解决方案 我也遇到过这个问题.这里有三种方法可以解决:Spring3中js/css/jpg/gif等静态资源无法找到.我习惯第二种 解决方案二: 你的配置文件放到哪里了,有没有正确应用? 解决方案三: 看你的配置,应该是JSP里面引用js文件的路径问题

springMVC对静态资源的拦截问题

问题描述 无论我怎么陪web.xml的拦截./或者/uc/*我的静态资源都被拦截了. <servlet-mapping> <servlet-name>yinhex</servlet-name> <url-pattern>/uc/*</url-pattern> </servlet-mapping> 配置为: < mvc:resources mapping="/javascripts/**"location=&q

静态资源压缩(GZIP)

1.开GZIP有什么好处?答:Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度.Tips:如果网站的用户分布比较分散,并且静态文件过大,可以将静态文件放到CDN Spring Boot中进行如下配置即可: server.compression.enabled=true 73.20 Enable HTTP response compressionHTTP response compression is supported by Jetty,

Spring4.1新特性——静态资源处理增强

Spring 4.1对静态资源处理进行了细化,ResourceHttpRequestHandler细分为两大部分:ResourceResolver和ResourceTransformer. Java代码   public interface ResourceResolver {     Resource resolveResource(HttpServletRequest request, String requestPath, List<? extends Resource> locatio