博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported
阅读量:6146 次
发布时间:2019-06-21

本文共 5729 字,大约阅读时间需要 19 分钟。

1:先上控制台报错信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
org.springframework.web.HttpRequestMethodNotSupportedException: Request method
'PUT'
not supported
    
at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:
203
)
    
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:
352
)
    
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:
299
)
    
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:
57
)
    
at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:
299
)
    
at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:
1104
)
    
at org.springframework.test.web.servlet.TestDispatcherServlet.getHandler(TestDispatcherServlet.java:
90
)
    
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:
916
)
    
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:
877
)
    
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:
966
)
    
at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:
879
)
    
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
647
)
    
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:
842
)
    
at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:
65
)
    
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
725
)
    
at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:
167
)
    
at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:
134
)
    
at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:
144
)
    
at main.test.PerformanceTestBase.testPut(PerformanceTestBase.java:
46
)
    
at main.test.PerformanceTest.junitTestUpdRentByQian(PerformanceTest.java:
1917
)
    
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
57
)
    
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43
)
    
at java.lang.reflect.Method.invoke(Method.java:
606
)
    
at org.junit.runners.model.FrameworkMethod$
1
.runReflectiveCall(FrameworkMethod.java:
50
)
    
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
12
)
    
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
47
)
    
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:
17
)
    
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
26
)
    
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:
73
)
    
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:
82
)
    
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:
73
)
    
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:
325
)
    
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:
217
)
    
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:
83
)
    
at org.junit.runners.ParentRunner$
3
.run(ParentRunner.java:
290
)
    
at org.junit.runners.ParentRunner$
1
.schedule(ParentRunner.java:
71
)
    
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:
288
)
    
at org.junit.runners.ParentRunner.access$
000
(ParentRunner.java:
58
)
    
at org.junit.runners.ParentRunner$
2
.evaluate(ParentRunner.java:
268
)
    
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:
61
)
    
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:
68
)
    
at org.junit.runners.ParentRunner.run(ParentRunner.java:
363
)
    
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:
163
)
    
at org.junit.runner.JUnitCore.run(JUnitCore.java:
137
)
    
at org.junit.runner.JUnitCore.run(JUnitCore.java:
115
)
    
at main.test.TestRunnable.run(PerformanceTest.java:
2129
)
    
at java.lang.Thread.run(Thread.java:
744
)

2:分析错误原因

     以前分析过一些异常相关的问题,自从进入新公司之后,也做了若干个项目,其中也遇到了许多的问题,不过每一个新的问题都记录下来自己的分析、解决之道的习惯没有保持下来,主要事情比较多,上班和住的地方相对比较远,每天早出晚归,精力时间有限。哈哈,不过这个问题遇到几次了,前几天同事又遇到了,让我萌生了继续记录下来的想法。

     还是老办法,遇到程序报错,先从头到尾将报错信息过一遍,分析、解决的思路无怪乎下面几种:

     1:如果是以前遇到过并且分析解决过的,那么问题就迎刃而解了——这就是积累的重要性的体现了

     2:如果从来没遇到过,先将报错信息从头到尾扫一下,自己编写的代码出错的概率是个大概率事件,找找报错信息中自己项目中报错的代码是那一句,结合报错信息和自己的代码,大部分的错误都能找到根源,并且通过自己的分析都能解决掉,现在这个错误就是这样的。

有用的报错信息是:org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported    我的代码中相关的代码是:@RequestMapping(value="/BG/Rent/{id}",method={RequestMethod.POST}))    请求的方法有:
1
2
3
4
5
package
org.springframework.web.bind.annotation;
 
public
enum
RequestMethod {
    
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;
}
问题很明显了,下面就是看看该修改那里的问题了——我这里是通过多线程+单元测试的方式模拟简单的压力测试情景,看一下自己单元测试中的情况,发现对应的方法调错了,ok,发现问题基本上算是解决了问题。修改一下就好了,然后测试一下。  3:如果自己从来没遇到过,通过步骤2也不能将问题解决,就需要自己利用搜索引擎的力量了,基本上到这里又能解决大部分的问题了

3:题外话

     目前的项目采用的是AngularJs+Bootstrap+SpringMVC+SpringBoot+JPA的技术手段来实施的,并且前后端的开发是分开的,通过使用AngularJs发送异步请求的方式常常会出现这个问题,因为同一个URL通过配置不同的方法的方式来对应应用中的增删改查的方法(增——PUT,删——DELETE,改——POST,查——POST/GET分别对应列表查询和单个的信息查询)。

4:查看对应的报错异常类的相关信息,有时也能帮助我们更快更好更全面的了解此异常触发的时机,比如:

 

转载地址:http://ktmya.baihongyu.com/

你可能感兴趣的文章
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>