栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

DispatcherServlet拦截静态资源的问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DispatcherServlet拦截静态资源的问题

问题和原因
如果我们的中央调度器DispatcherServlet的*.do写成这样:/那么就会导致我们静态资源无法访问,
注意:做这个实验一定要把浏览器缓存清一下,不然你还是能够看到图片。
首先说明一下原因:
在 Tomcat 中,有一个专门用于处理静态资源访问的 Servlet 名叫 DefaultServlet。其为 default。可以处理各种静态资源访问请求。该 Servlet 注册在 Tomcat 服务器的 web.xml 中。在 Tomcat 安装目录/conf/web.xml。

里面435行有这样一段代码:

    
        default
        /
    

所以如果我们把自己的中央调度器写成了/就会跟它冲突,而我们的DispatcherServlet没有处理静态资源的能力所以就会出错。

解决方案:
第一种方案:
使用mvc:default-servlet-handler/
声 明 了 后 , springmvc 框 架 会 在 容 器 中 创 建DefaultServletHttpRequestHandler 处理器对象。它会像一个检查员,对进入 DispatcherServlet的 URL 进行筛查,如果发现是静态资源的请求,就将该请求转由 Web 应用服务器默认的Servlet 处理。一般的服务器都有默认的 Servlet。

第二种方案:
在 Spring3.0 版本后,Spring 定义了专门用于处理静态资源访问请求的处理器ResourceHttpRequestHandler。并且添加了mvc:resources/标签,专门用于解决静态资源无法访问问题。需要在 springmvc 配置文件中添加如下形式的配置:

     

解决动态资源和静态资源冲突的问题,在 springmvc 配置文件加入:

    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/694820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号