答案最后。:D

默认的访问的URL都会被DispatcherServlet所拦截。

这里说一下如何配置springmvc访问静态文件。

    <mvc:default-servlet-handler/>

在springmvc-servlet.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,
它会对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。

使用<mvc:default-servlet-handler/>会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,
把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回.
DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.

补充说明:多个HandlerMapping的执行顺序问题:

DefaultAnnotationHandlerMapping的order属性值是:0
<mvc:resources/ >自动注册的 SimpleUrlHandlerMapping的order属性值是: 2147483646
<mvc:default-servlet-handler/>自动注册 的SimpleUrlHandlerMapping 的order属性值是: 2147483647
spring会先执行order值比较小的。当访问一个a.jpg图片文件时,先通过 DefaultAnnotationHandlerMapping 来找处理器,一定是找不到的,我们没有叫a.jpg的Action。
再按order值升序找,由于最后一个 SimpleUrlHandlerMapping 是匹 "/**"的,所以一定会匹配上,再响应图片。

文件目录结构:静态资源放在webapp下的resources目录下。

 出现Request method 'GET' not supported错误的原因如下:

RequestMapping(name="/xxx")

此处应该是RequestMapping(value="/xxx"),最主要的原因是没有配置RequestMapping的value属性

这样会在DefaultAnnotationHandlerMapping中注册一个"/**"uri,

当发起请求时首先执行的DefaultAnnotationHandlerMapping会拦截住你的所有静态资源的请求,以至于所有静态资源都无法访问。

::31.180 [http-bio--exec-] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'spring_mvc' processing GET request for [/ssm/resources/csv/test.csv]
::31.182 [http-bio--exec-] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /resources/csv/test.csv
::31.185 [http-bio--exec-] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Did not find handler method for [/resources/csv/test.csv]
::31.186 [http-bio--exec-] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Matching patterns for request [/resources/csv/test.csv] are [/**]
09:57:31.187 [http-bio-8080-exec-6] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - URI Template variables for request [/resources/csv/test.csv] are {}
09:57:31.194 [http-bio-8080-exec-6] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Mapping [/resources/csv/test.csv] to HandlerExecutionChain with handler [org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler@582f1524] and 1 interceptor
09:57:31.195 [http-bio-8080-exec-6] DEBUG o.s.web.servlet.DispatcherServlet - Last-Modified value for [/ssm/resources/csv/test.csv] is: -1
09:57:31.201 [http-bio-8080-exec-6] DEBUG o.s.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'spring_mvc': assuming HandlerAdapter completed request handling
09:57:31.202 [http-bio-8080-exec-6] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
09:57:31.203 [http-bio-8080-exec-6] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'sqlSessionFactory'

QQ技术交流群:282575808

--------------------------------------

声明: 原创文章,未经允许,禁止转载!

--------------------------------------

springmvc访问静态资源出现Request method 'GET' not supported的更多相关文章

  1. SpringMVC访问静态资源

    SpringMVC访问静态资源 在SpringMVC中常用的就是Controller与View.但是我们常常会需要访问静态资源,如html,js,css,image等. 默认的访问的URL都会被Dis ...

  2. SpringMVC访问静态资源的三种方式(转)

    本文转自:http://www.iigrowing.cn/springmvc_fang_wen_jing_tai_zi_yuan_de_san_zhong_fang_shi.html 如何你的Disp ...

  3. $ is not defined与SpringMVC访问静态资源

    编写前台Jquery代码时,遇到谷歌浏览器报错:Uncaught ReferenceError: $ is not defined 意味着Jquery库并没有导入到页面.这是有几种情况需要考虑: 1. ...

  4. SpringMVC访问静态资源[转]

    1.如果只配置拦截类似于*.do格式的url,则对静态资源的访问是没有问题的,如下: <!-- SpringMVC核心分发器 --> <servlet> <servlet ...

  5. springmvc访问静态资源的springmvc.xml配置

    一. 问题及需求 由于Spring MVC的web.xml文件中关于DispatcherServlet拦截url的配置为"/",拦截了所有的请求,同时*.js,*.jpg等静态资源 ...

  6. SpringMVC访问静态资源的问题。

    在项目中引用css和js文件一直出错,反复修改文件路径始终访问不到.究其原因原来是应该在web.xml 文件中添加访问静态资源的默认servlet. 如下. <servlet-mapping&g ...

  7. 转转转!SpringMVC访问静态资源的三种方式

    如果你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg ...

  8. 当配置 DispatcherServlet拦截“/”,SpringMVC访问静态资源的三种方式

    如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg ...

  9. SpringMVC访问静态资源的三种方式

    如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg ...

随机推荐

  1. fdatool的滤波器设计

    作者:桂. 时间:2017-08-15  20:28:11 链接:http://www.cnblogs.com/xingshansi/p/7367738.html 前言 本文主要记录滤波器设计的基本流 ...

  2. Vue(四):实例化第一个Vue应用

    实例化语法 var vm = new Vue({ // 选项 }) Vue 构造器中的内容 <!DOCTYPE html> <html> <head> <me ...

  3. Git--团队开发必备神器

    花了两天时间专门搞了一下git.整理一下分享给大家.以下我们開始.. . 转载请注明出处: http://blog.csdn.net/Hello_Chillax/article/details/474 ...

  4. jquery JSON的解析方式实例分享

    本文以jquery异步获取的数据类型——json对象和字符串为依据,介绍两种方式获取到的结果处理方式. 这里考虑都考虑的是服务器返回的是JSON形式的字符串的形式,对于利用JSONObject等插件封 ...

  5. (转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦

    引言: 在使用 Unity3d 开发微端.或者网页游戏的时候常常须要将资源打包成 AssetBundle ,然后通过 www 的方式动态的下载资源.今天要分享的是我再动态下载 Animation 骨骼 ...

  6. 技术范儿的 Keep 发力AI赛道,为什么“虚拟教练”会更懂你?

    http://www.tmtpost.com/3363367.html 摘要: 虚拟教练技术会整合到一些业务场景和硬件产品中收费,但是收费的具体情况彭跃辉还暂未透露. 图片来源于Unsplash 自去 ...

  7. [AWS vs Azure] 云计算里AWS和Azure的探究(4)

    云计算里AWS和Azure的探究(4) ——Amazon EC2 和 Windows Azure Virtual Machine 接下来我们来看看Azure VM的创建.Azure里面虚拟机的创建跟A ...

  8. 关于linux上cron服务的python封装工具

    关于cron:定时任务服务,一般linux自带且已启动.(pgrep cron查看cron服务是否启动了.) 关于plan:一个通过python来定制cron服务的工具.其官网:http://plan ...

  9. Web服务器缓存

    前面提到的一些缓存技术都是有我们的动态才程序控制的,现在的web服务器功能越来越强大,常用的web服务器软件也都内置了缓存功能,下面我们就简单的说下服务器端缓存的应用. 首先,我们先来介绍一下URL映 ...

  10. spring-kafka手动提交offset

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...