全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解springmvc拦截器拦截静态资源

springmvc拦截器interceptors

springmvc拦截器能够对请求的资源路径进行拦截,极大的简化了拦截器的书写。但是,千万千万要注意一点:静态资源的放行。

上代码:

<mvc:resources mapping="/resources/**" location="/static/resources" /> 
  <mvc:resources mapping="/static/css/**" location="/static/css/" /> 
  <mvc:resources mapping="/static/images/**" location="/static/images/" /> 
  <mvc:resources mapping="/static/js/**" location="/static/js/" /> 
<mvc:interceptors> 
    <!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求  
    <bean class="com.myTree.interceptor.LoginInterceptor" />--> 
    <mvc:interceptor> 
      <mvc:mapping path="/**" /> 
      <!-- 需排除拦截的地址 -->  
      <mvc:exclude-mapping path="/Login"/>  
      <mvc:exclude-mapping path="/login"/>  
      <mvc:exclude-mapping path="/sattic/**"/>  
      <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 --> 
      <beans:bean class="com.myTree.interceptor.LoginInterceptor" > 
      </beans:bean> 
    </mvc:interceptor> 
  </mvc:interceptors> 

问题来了,在请求jsp页面的时候,你的静态资源的访问仍然会被自定义拦截器拦截,这会导致程序运行的效率大大下降,还会不停的跳转到拦截器的逻辑。主要原因是

<mvc:mapping path="/**" /> 

会对所有的请求资源进行拦截,虽然静态资源已经排除了,但还是会被拦截到。

如何解决这个bug呢?

主要有三种方式:

1、修改请求的url地址。

 如果请求的url地址都是以*.do结尾,那么拦截器中的配置可以变为拦截以do结尾的资源,静态资源自然就不会被拦截到了;
2、在自定义拦截器中对资源进行判断,如果满足需要排除的资源,就进行放行。

<!-- 拦截器配置 -->  
  <mvc:interceptors>  
   <!-- session超时 -->  
   <mvc:interceptor>  
    <mvc:mapping path="/*/*"/>  
    <bean class="com.myTree.interceptor.LoginInterceptor">  
     <property name="allowUrls">  
      <list>  
       <!-- 如果请求中包含以下路径,则不进行拦截 -->  
       <value>/login</value>  
       <value>/js</value>  
       <value>/css</value>  
       <value>/image</value>  
       <value>/images</value>  
      </list>  
     </property>  
    </bean>  
   </mvc:interceptor>  
  </mvc:interceptors>  

在拦截器中设定不拦截的属性: 

/** 
 * 处理登录拦截器 
 */  
public class LoginInterceptor implements HandlerInterceptor{  
    
  public String[] allowUrls;//还没发现可以直接配置不拦截的资源,所以在代码里面来排除  
    
  public void setAllowUrls(String[] allowUrls) {  
    this.allowUrls = allowUrls;  
  }  
  
  @Override  
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response,  
      Object handler) throws Exception {<pre name="code" class="java"> <span style="white-space:pre"> </span>String requestUrl = request.getRequestURI().replace(request.getContextPath(), "");   
    System.out.println(requestUrl);  
    if(null != allowUrls && allowUrls.length>=1){  
      for(String url : allowUrls) {   
        if(requestUrl.contains(url)) {   
          return true;   
        }   
      } 
} 

3、设置web.xml中的默认拦截器,不拦截静态资源

在springmvc的Dispatcher中配置<mvc:default-servlet-handler />(一般Web应用服务器默认的Servlet名称是"default",所以这里我们激活Tomcat的defaultServlet来处理静态文件,在web.xml里配置如下代码即可:)

<!--该servlet为tomcat,jetty等容器提供,将静态资源映射从/改为/static/目录,如原来访问http://localhost/foo.css,现在http://localhost/static/foo.css -->  
<!-- 不拦截静态文件 -->  
<servlet-mapping>  
  <servlet-name>default</servlet-name>  
  <url-pattern>/js/*</url-pattern>  
  <url-pattern>/css/*</url-pattern>  
  <url-pattern>/images/*</url-pattern>  
  <url-pattern>/fonts/*</url-pattern>  
</servlet-mapping>  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring拦截静态资源  # spring拦截器静态资源  # 解决springMVC 跳转js css图片等静态资源无法加载的问题  # 防止SpringMVC拦截器拦截js等静态资源文件的解决方法  # SpringMVC访问静态资源的三种方式小结  # SpringMVC访问静态资源的方法  # 详解SpringMVC中设置静态资源不被拦截的问题  # SpringMVC 拦截器不拦截静态资源的三种处理方式方法  # SpringMVC中处理静态资源的过程详解  # 拦截器  # 自定义  # 器中  # 来了  # 还没  # 还会  # 要注意  # 会对  # 可以直接  # 主要原因  # 中对  # 如何解决  # 这会  # 大家多多  # 跳转到  # 主要有三种  # 简化了  # list  # jsp  # login 


相关文章: 建站主机系统SEO优化与智能配置核心关键词操作指南  Android滚轮选择时间控件使用详解  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何安全更换建站之星模板并保留数据?  宿州网站制作公司兴策,安徽省低保查询网站?  盐城做公司网站,江苏电子版退休证办理流程?  代购小票制作网站有哪些,购物小票的简要说明?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  大同网页,大同瑞慈医院官网?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何通过PHP快速构建高效问答网站功能?  建站之星云端配置指南:模板选择与SEO优化一键生成  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  定制建站是什么?如何实现个性化需求?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  ,在苏州找工作,上哪个网站比较好?  香港服务器选型指南:免备案配置与高效建站方案解析  b2c电商网站制作流程,b2c水平综合的电商平台?  建站之星如何一键生成手机站?  建站之星如何开启自定义404页面避免用户流失?  如何基于云服务器快速搭建网站及云盘系统?  常州企业网站制作公司,全国继续教育网怎么登录?  西安专业网站制作公司有哪些,陕西省建行官方网站?  建站之星如何保障用户数据免受黑客入侵?  如何在景安云服务器上绑定域名并配置虚拟主机?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  建站之星安装步骤有哪些常见问题?  如何在宝塔面板中修改默认建站目录?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  建站之星备案流程有哪些注意事项?    建站之星代理商如何保障技术支持与售后服务?  如何高效配置IIS服务器搭建网站?  建站之星代理如何获取技术支持?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  IOS倒计时设置UIButton标题title的抖动问题  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  广州建站公司哪家好?十大优质服务商推荐  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何选择PHP开源工具快速搭建网站?  如何快速搭建虚拟主机网站?新手必看指南  如何用腾讯建站主机快速创建免费网站?  智能起名网站制作软件有哪些,制作logo的软件?  ,石家庄四十八中学官网?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何快速生成可下载的建站源码工具?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。