SpringMVC 静态资源&拦截器(interceptor and static resource) 笔记(七)

SpringMVC会在dispatchServlet拦截请求,所有在我们配置的时候,如果将所有请求都拦截了,连同静态资源也会拦截。

有两种方式对静态资源进行访问:

1、配置default-servlet-handler,SpringMVC上下文中定义一个DefaultServletHttpRequestHandler,它会检查DispatchServlet的URL。然后如果发现是静态资源,就由web应用服务器的默认Servlet处理,如果是其他请求就直接交由相应的handler处理。

2、使用mvc:resources配置,定义相应的静态资源映射。


配置default-servlet-handler非常简单,就一行配置就完成了:

 <mvc:default-servlet-handler />

使用mvc:resources配置也不复杂:

<mvc:resources mapping="/resource" location="/" /> mapping是访问的路径,location是实际的访问资源的位置。

例如我想访问/image/abc.jpg 在客户端输入的路径就为/resource/image/abc.jpg


静态资源缓存

我们可以使用静态缓存cache-period,但是缓存之后,如果我们的静态资源文件更新了,用户也是用旧缓存的,只要未达到过期时间。

<mvc:resources cache-period="2592000" mapping="/#{re.resourcePath}/**" location="/"/>

所以我们希望在我们更新静态资源后,用户会使用新的静态资源,所以我们需要采用动态的mapping资源映射目录。

public class ResourcePathExposer implements ServletContextAware {

    private ServletContext servletContext;
    private String resourcePath;

    public void init(){
        String version = "1.0";
        String path = "/resource";
        this.resourcePath = path + "-" + version;
        this.servletContext.setAttribute("resourcePath",this<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值