记另类Request method 'GET' not supported

一般遇到Request method 'GET' not supported这种问题,大家都会找相应controller下的具体方法,把get改为post之类。但是我这次是在访问静态资源,static下的html是遇到的。

说下解决思路,之前是好好的,突然同事说静态资源无法访问,控制台异常如下:


值得留意的有几点:1、PageNotFound:215;2、Request method 'GET' not supported;3、DefaultHandlerExceptionResolver:189 - Resolved exception caused by Handler execution: org.springframework.web.HttpRequestMethodNotSupportedException(这点应该是前后两个部分需要注意的)。

没办法出现了问题就要处理,首先,直接百度,主要集中在Request method 'GET' not supported加html springboot一起搜索,我这是springboot项目,把那些xml配置文件相关的解答先给排除。还真在网上搜到一篇跟这个问题几乎一模一样的,stack overflow上的,老外的问题回答肯定专业。看完后上面说是@RequestMapping(也好像是项目启动处的配置文件,具体记不清了)的url里可能只有一个/,后面遇到问题的还真找到了,在自己相应的位置加上具体一些路径就OK了。于是按照这种思路我开始整个项目搜索每个接口,根本就没有这种情况。

后来按照这个问题搜索加载不到static下的html,这时主要处理针对项目的入口,如图所示两处位置,


WebMvcConfigurerAdapter是spring给出的一些默认配置,如静态资源默认最优先访问resources下的static里的文件(html),所以我猜测可能是我哪里的配置影响了这个功能(之前这种配置一直是好的)。于是就开始疯狂搜索各种解决方案,这个又捣鼓了两天的时间,还是没搞定,把人逼疯的节奏。

前天晚上想到了另外一种可能,引用的jar包版本冲突,熟悉springboot的朋友都知道,不同版本冲突的严重性,可是我最近没有更新过pom里的东西。不管这些了,先改下boot的版本,升级到目前的最新版。下载了半天,启动后依然这个异常,其他一些引用也改了,同样不行。好吧,你牛逼,哥放弃了。

这些天是同事把项目恢复到之前的版本来回避这个问题的。昨天晚上我做了下更新,早上同事从git上pull代码之后问题又出现了。头疼,再看这个问题,还好他说昨天的代码是OK的,把昨天的代码down下来一份,放到本地。上边说了问题有三点,org.springframework.web.HttpRequestMethodNotSupportedException这个问题之前一直没看。于是,把这个东西单独拉出来个引用,设定好版本,我本地maven仓库里有三个它的版本,而且最新的修改日期也相近。不管他是不是springboot版本里带的了,拉出来试试。结果版本号一加,整个项目都起不来了。所以,这种解决思路也失败了。


就这样放弃很不甘心,总有种挫败感。没办法,把down下来的那份好的代码一个文件夹一个文件夹的往本地项目中复制。最终确定下来是其中一个类的问题,事情变简单了,浏览该类没发现异常。使用排除法,先留一个方法,然后一个一个的释放,直到问题再次出现。最终问题锁定:



大家注意,这里是name属性,正常情况下我都是写的value。问了下同事,他说以前用name的时候跟value没啥区别,都可能正常进行接口调用。试下了,好吧还真通了。把name改成value后所有的东西都正常了,html也可以正常访问。@RequestMapping中有8个属性:


我在网上搜了下,没找到介绍name的,不管了,反正平时我也没用过,如果有知道的朋友可以给我留言说明。





posted @ 2017-10-27 11:00  星朝  阅读(13192)  评论(1编辑  收藏  举报