静态资源过滤方式补充

昨天写过一篇

更改静态资源过滤方式。

在写 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" 


上一篇:IntelliJ IDEA 将 Maven 构建的 Java 项目打包


下一篇:HTML标签- 图像标签|学习笔记