springmvc处理静态资源合辑
来源:互联网 发布:诺查丹玛斯 知乎 编辑:程序博客网 时间:2024/06/01 09:25
静态资源通常指web客户端提交的请求是html,jsp,jpg,css等文件,而非某个动作action或带有后缀的请求,如login, .do, .mvc等。
静态资源通常因为不需要经过mvc的控制器处理,而是直接返回用户,因此在mvc框架下,需要单独配置,而不能跟非静态的动作混在一起给控制器处理,从而避免不必要的麻烦。
在servlet+jsp模式下,使用tomcat的默认servlet,如果不配置此项,所有资源都会经过控制器:
A:
<servlet-mapping><servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern><!-- 会将后缀为html的文件排除,可以配置多条 -->
<url-pattern>*.jpg</url-pattern>
<url-pattern>/resource/*</url-pattern><!-- 将resource目录下的所有文件排除 -->
</servlet-mapping>
在springmvc模式下,需要配置spring的dispatcher和resource标签。注意,resource标签是否生效是根据dispatcher的配置来决定的。
对于springmvc的dispatcher,配置其mapping
B:
<servlet-mapping>
<servlet-name>springmvcDispatch</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
当B中使用/,项目中包括子目录的所有无后缀的请求都经过控制器,使用A方式处理,也可以使用resouce标签,如:
C:
<mvc:resources mapping="/resource/*.html" location="/static/" /> ,请求resource下后缀为html的文件则会转到/static/下,通常<mvc:resources mapping="/**/*.html" location="/" />即可满足所有的原路径访问。C方式和A方式等效的,可以配置多条。
亦可使用:
D:
<mvc:default-servlet-handler/>,相当于用A方式自动把带后缀的请求转到当前请求的目录下,如请求/resource/123.jpg则转到/resource/,不经过处理器,和C的<mvc:resources mapping="/**/*.*" location="/" />形式等效。但是D方式主要用处在于指定默认servlet而不是设置映射:<mvc:default-servlet-handler default-servlet-name="mydefaultServlet"/>
在使用B方式的时候,匹配顺序A方式-->D方式-->C方式。
当B使用/*,则控制器会对项目下所有带后缀和无后缀的请求进行处理。谨慎使用,不建议采用,尤其是使用mvc框架的时候,很容易造成请求递归死循环。
当B使用*.mvc等后缀匹配,则控制器只会处理项目中所有的mvc后缀的请求,那么非mvc后缀的文件都不会经过控制器,默认会启用D方式,而C方式无效。通常推荐此方式,如果使用rest架构,则推荐使用/结合resource标签。如果还使用了A方式,则D方式不是默认的。
不管B方式还是A方式,spring的interceptor都不会对其造成影响。
特别的,对于C方式,其中的mapping可能会是/resource/,/resource/*,/resource/**等,有时候它们的效果是相同的,但是这几种方式会有不一样的优先级。具体可参考我的《java程序路径通配符表达式合辑》中详解。
对于静态资源处理的一些建议:
项目开始阶段划分好静态目录;
servlet mapping使用后缀方式过滤请求,当然,如果你使用rest风格的api,那么建议使用/+resource标签的方式;
适当使用缓存。
- springmvc处理静态资源合辑
- springmvc静态资源处理
- springmvc处理静态资源
- springmvc 静态资源处理
- SpringMVC处理静态资源
- SpringMVC静态资源处理
- springmvc处理静态资源
- SpringMVC静态资源处理
- springmvc静态资源处理
- SpringMVC 处理静态资源
- SpringMVC-----SpringMVC静态资源处理
- SpringMVC处理静态资源请求
- SpringMVC之处理静态资源
- SpringMVC处理静态资源异常
- SpringMVC 静态资源处理 详解
- SpringMVC处理静态资源异常
- springmvc对静态资源的处理
- springmvc中对静态资源的处理
- 按位与、或、异或等运算方法
- MySQL High Available with MHA(转)
- Spring JDBC-Spring事务管理之数据库事务基础知识
- [详解]优化API接口响应速度的套路
- Hiernate_day01
- springmvc处理静态资源合辑
- Maven Tomcat7自动部署
- Maven常用命令大全与pom文件讲解
- Java和JavaScript中使用Json方法大全
- Ajax+SpringMVC+Spring+Mybatis+MySql+js用户注册实例
- xml动画的开发
- 欢迎使用CSDN-markdown编辑器
- MySQL高可用架构之MHA(转)
- #leetcode#647. Palindromic Substrings