springmvc使静态资源不进入DsipatchServlet的两种设置方法

前提条件是web.xml设置<url-pattern>/</url-patten>

原理:

设置为/,并不会override任何其他的servlet。它只是替换了servlet容器内置的默认servlet的部分功能,用于所有对于其他注册servlet都不匹配的请求。通常情况下,对静态资源(CSS/JS/image)以及directory listings(/register,etc)这样的请求会触发。

而servlet容器内置的默认servlet 还能够处理 HTTP 缓存请求、媒体 (音频/视频) 流和文件下载恢复等。通常情况下,你并不想重写默认servlet,因为这样你将会有很多的任务要处理,这是不容易的。

 

依据上面的原理,就有以下两种方式使静态资源不进入DsipatchServlet

方法1:使用容器内置的servlet来处理静态资源,在web.xml文件中配置

  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
    <url-pattern>*.jpg</url-pattern>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.gif</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.html</url-pattern>
    <url-pattern>*.json</url-pattern>
  </servlet-mapping>

方法2:使用<mvc:resources>标记

此标记允许静态资源请求遵循特定的 URL 模式

而这个模式是由ResourceHttpRequestHandler中配置的Resource locations list决定的。这提供了一种方便的方法, 可以从 web 应用程序根之外的位置 (包括类路径上的位置) 服务静态资源。在mvc配置文件中配置

<!--配置静态资源可访问 不进行拦截 js目录下/js/的所有文件**-->
    <mvc:resources mapping="/js/**" location="/js/"/>
    <mvc:resources mapping="/images/**" location="/images/"/>
    <mvc:resources mapping="/css/**" location="/css/"/>
    <mvc:annotation-driven/>
其中 <mvc:annotation-driven/>要配置,原因可能是由于这里遵循了特定的URL模式,那么需要使用此标记注册Spring MVC 需要的DefaultAnnotationHandlerMapping 和AnnotationMethodHandlerAdapter bean(Spring3), 以便将其他请求发送到@Controllers。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值