zoukankan      html  css  js  c++  java
  • springmvc访问静态资源出现Request method 'GET' not supported

    答案最后。: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会拦截住你的所有静态资源的请求,以至于所有静态资源都无法访问。

    09:57:31.180 [http-bio-8080-exec-6] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'spring_mvc' processing GET request for [/ssm/resources/csv/test.csv]
    09:57:31.182 [http-bio-8080-exec-6] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /resources/csv/test.csv
    09:57:31.185 [http-bio-8080-exec-6] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Did not find handler method for [/resources/csv/test.csv]
    09:57:31.186 [http-bio-8080-exec-6] 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

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

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

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

     

  • 相关阅读:
    0xx_nodeJS
    0xx_jQuery
    0xx_正则表达式
    0xx_ES6
    centos重启关机命令
    tomcat服务开机启动脚本
    mysql授权总结
    centos创建文件命令
    svn如果无法连接有可能导致右键卡
    简单导出excel
  • 原文地址:https://www.cnblogs.com/xxoome/p/8005643.html
Copyright © 2011-2022 走看看