<div id="cnblogs_post_body" class="blogpost-body"><p><strong><span style="font-size: 18pt;">1:先上控制台报错信息</span></strong></p> <div class="cnblogs_Highlighter sh-gutter"> <div><div id="highlighter_255598" class="syntaxhighlighter java"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div><div class="line number28 index27 alt1">28</div><div class="line number29 index28 alt2">29</div><div class="line number30 index29 alt1">30</div><div class="line number31 index30 alt2">31</div><div class="line number32 index31 alt1">32</div><div class="line number33 index32 alt2">33</div><div class="line number34 index33 alt1">34</div><div class="line number35 index34 alt2">35</div><div class="line number36 index35 alt1">36</div><div class="line number37 index36 alt2">37</div><div class="line number38 index37 alt1">38</div><div class="line number39 index38 alt2">39</div><div class="line number40 index39 alt1">40</div><div class="line number41 index40 alt2">41</div><div class="line number42 index41 alt1">42</div><div class="line number43 index42 alt2">43</div><div class="line number44 index43 alt1">44</div><div class="line number45 index44 alt2">45</div><div class="line number46 index45 alt1">46</div><div class="line number47 index46 alt2">47</div><div class="line number48 index47 alt1">48</div><div class="line number49 index48 alt2">49</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="java plain">org.springframework.web.HttpRequestMethodNotSupportedException: Request method </code><code class="java string">'PUT'</code> <code class="java plain">not supported</code></div><div class="line number2 index1 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:</code><code class="java value">203</code><code class="java plain">)</code></div><div class="line number3 index2 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:</code><code class="java value">352</code><code class="java plain">)</code></div><div class="line number4 index3 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:</code><code class="java value">299</code><code class="java plain">)</code></div><div class="line number5 index4 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:</code><code class="java value">57</code><code class="java plain">)</code></div><div class="line number6 index5 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:</code><code class="java value">299</code><code class="java plain">)</code></div><div class="line number7 index6 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:</code><code class="java value">1104</code><code class="java plain">)</code></div><div class="line number8 index7 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.web.servlet.TestDispatcherServlet.getHandler(TestDispatcherServlet.java:</code><code class="java value">90</code><code class="java plain">)</code></div><div class="line number9 index8 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:</code><code class="java value">916</code><code class="java plain">)</code></div><div class="line number10 index9 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:</code><code class="java value">877</code><code class="java plain">)</code></div><div class="line number11 index10 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:</code><code class="java value">966</code><code class="java plain">)</code></div><div class="line number12 index11 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:</code><code class="java value">879</code><code class="java plain">)</code></div><div class="line number13 index12 alt2"><code class="java spaces"> </code><code class="java plain">at javax.servlet.http.HttpServlet.service(HttpServlet.java:</code><code class="java value">647</code><code class="java plain">)</code></div><div class="line number14 index13 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:</code><code class="java value">842</code><code class="java plain">)</code></div><div class="line number15 index14 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:</code><code class="java value">65</code><code class="java plain">)</code></div><div class="line number16 index15 alt1"><code class="java spaces"> </code><code class="java plain">at javax.servlet.http.HttpServlet.service(HttpServlet.java:</code><code class="java value">725</code><code class="java plain">)</code></div><div class="line number17 index16 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:</code><code class="java value">167</code><code class="java plain">)</code></div><div class="line number18 index17 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:</code><code class="java value">134</code><code class="java plain">)</code></div><div class="line number19 index18 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:</code><code class="java value">144</code><code class="java plain">)</code></div><div class="line number20 index19 alt1"><code class="java spaces"> </code><code class="java plain">at main.test.PerformanceTestBase.testPut(PerformanceTestBase.java:</code><code class="java value">46</code><code class="java plain">)</code></div><div class="line number21 index20 alt2"><code class="java spaces"> </code><code class="java plain">at main.test.PerformanceTest.junitTestUpdRentByQian(PerformanceTest.java:</code><code class="java value">1917</code><code class="java plain">)</code></div><div class="line number22 index21 alt1"><code class="java spaces"> </code><code class="java plain">at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</code></div><div class="line number23 index22 alt2"><code class="java spaces"> </code><code class="java plain">at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:</code><code class="java value">57</code><code class="java plain">)</code></div><div class="line number24 index23 alt1"><code class="java spaces"> </code><code class="java plain">at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:</code><code class="java value">43</code><code class="java plain">)</code></div><div class="line number25 index24 alt2"><code class="java spaces"> </code><code class="java plain">at java.lang.reflect.Method.invoke(Method.java:</code><code class="java value">606</code><code class="java plain">)</code></div><div class="line number26 index25 alt1"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.model.FrameworkMethod$</code><code class="java value">1</code><code class="java plain">.runReflectiveCall(FrameworkMethod.java:</code><code class="java value">50</code><code class="java plain">)</code></div><div class="line number27 index26 alt2"><code class="java spaces"> </code><code class="java plain">at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:</code><code class="java value">12</code><code class="java plain">)</code></div><div class="line number28 index27 alt1"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:</code><code class="java value">47</code><code class="java plain">)</code></div><div class="line number29 index28 alt2"><code class="java spaces"> </code><code class="java plain">at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:</code><code class="java value">17</code><code class="java plain">)</code></div><div class="line number30 index29 alt1"><code class="java spaces"> </code><code class="java plain">at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:</code><code class="java value">26</code><code class="java plain">)</code></div><div class="line number31 index30 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:</code><code class="java value">73</code><code class="java plain">)</code></div><div class="line number32 index31 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:</code><code class="java value">82</code><code class="java plain">)</code></div><div class="line number33 index32 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:</code><code class="java value">73</code><code class="java plain">)</code></div><div class="line number34 index33 alt1"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:</code><code class="java value">325</code><code class="java plain">)</code></div><div class="line number35 index34 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:</code><code class="java value">217</code><code class="java plain">)</code></div><div class="line number36 index35 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:</code><code class="java value">83</code><code class="java plain">)</code></div><div class="line number37 index36 alt2"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.ParentRunner$</code><code class="java value">3</code><code class="java plain">.run(ParentRunner.java:</code><code class="java value">290</code><code class="java plain">)</code></div><div class="line number38 index37 alt1"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.ParentRunner$</code><code class="java value">1</code><code class="java plain">.schedule(ParentRunner.java:</code><code class="java value">71</code><code class="java plain">)</code></div><div class="line number39 index38 alt2"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:</code><code class="java value">288</code><code class="java plain">)</code></div><div class="line number40 index39 alt1"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.ParentRunner.access$</code><code class="java value">000</code><code class="java plain">(ParentRunner.java:</code><code class="java value">58</code><code class="java plain">)</code></div><div class="line number41 index40 alt2"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.ParentRunner$</code><code class="java value">2</code><code class="java plain">.evaluate(ParentRunner.java:</code><code class="java value">268</code><code class="java plain">)</code></div><div class="line number42 index41 alt1"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:</code><code class="java value">61</code><code class="java plain">)</code></div><div class="line number43 index42 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:</code><code class="java value">68</code><code class="java plain">)</code></div><div class="line number44 index43 alt1"><code class="java spaces"> </code><code class="java plain">at org.junit.runners.ParentRunner.run(ParentRunner.java:</code><code class="java value">363</code><code class="java plain">)</code></div><div class="line number45 index44 alt2"><code class="java spaces"> </code><code class="java plain">at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:</code><code class="java value">163</code><code class="java plain">)</code></div><div class="line number46 index45 alt1"><code class="java spaces"> </code><code class="java plain">at org.junit.runner.JUnitCore.run(JUnitCore.java:</code><code class="java value">137</code><code class="java plain">)</code></div><div class="line number47 index46 alt2"><code class="java spaces"> </code><code class="java plain">at org.junit.runner.JUnitCore.run(JUnitCore.java:</code><code class="java value">115</code><code class="java plain">)</code></div><div class="line number48 index47 alt1"><code class="java spaces"> </code><code class="java plain">at main.test.TestRunnable.run(PerformanceTest.java:</code><code class="java value">2129</code><code class="java plain">)</code></div><div class="line number49 index48 alt2"><code class="java spaces"> </code><code class="java plain">at java.lang.Thread.run(Thread.java:</code><code class="java value">744</code><code class="java plain">)</code></div></div></td></tr></tbody></table></div></div> </div> <p><strong><span style="font-size: 18pt;">2:分析错误缘由</span></strong></p> <p><span style="font-size: 16px;"> 之前分析过一些异常相关的问题,自从进入新公司以后,也作了若干个项目,其中也遇到了许多的问题,不过每个新的问题都记录下来本身的分析、解决之道的习惯没有保持下来,主要事情比较多,上班和住的地方相对比较远,天天早出晚归,精力时间有限。哈哈,不过这个问题遇到几回了,前几天同事又遇到了,让我萌生了继续记录下来的想法。</span></p> <p><span style="font-size: 16px;"> 仍是老办法,遇到程序报错,先从头至尾将报错信息过一遍,分析、解决的思路无怪乎下面几种:</span></p> <p><span style="font-size: 16px;"> 1:若是是之前遇到过而且分析解决过的,那么问题就迎刃而解了——这就是积累的重要性的体现了</span></p> <p><span style="font-size: 16px;"> 2:若是历来没遇到过,先将报错信息从头至尾扫一下,本身编写的代码出错的几率是个大几率事件,找找报错信息中本身项目中报错的代码是那一句,结合报错信息和本身的代码,大部分的错误都能找到根源,而且经过本身的分析都能解决掉,如今这个错误就是这样的。</span></p> <pre><span style="font-size: 16px;"> 有用的报错信息是:org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported</span><br><span style="font-size: 16px;"> 个人代码中相关的代码是:@RequestMapping(value="/BG/Rent/{id}",method={RequestMethod.POST}))</span><br><span style="font-size: 16px;"> 请求的方法有:</span></pre> <div class="cnblogs_Highlighter sh-gutter"> <div><div id="highlighter_632805" class="syntaxhighlighter java"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="java keyword">package</code> <code class="java plain">org.springframework.web.bind.annotation;</code></div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2"><code class="java keyword">public</code> <code class="java keyword">enum</code> <code class="java plain">RequestMethod {</code></div><div class="line number4 index3 alt1"><code class="java spaces"> </code><code class="java plain">GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;</code></div><div class="line number5 index4 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div> </div> <pre><span style="font-size: 16px;"> 问题很明显了,下面就是看看该修改那里的问题了——我这里是经过多线程+单元测试的方式模拟简单的压力测试情景,看一下本身单元测试中的状况,发现对应的方法调错了,ok,发现问题基本上算是解决了问题。修改一下就行了,而后测试一下。</span><br><br><span style="font-size: 16px;"> 3:若是本身历来没遇到过,经过步骤2也不能将问题解决,就须要本身利用搜索引擎的力量了,基本上到这里又能解决大部分的问题了</span></pre> <p><strong><span style="font-size: 18pt;">3:题外话</span></strong></p> <p><span style="font-size: 16px;"> 目前的项目采用的是AngularJs+Bootstrap+SpringMVC+SpringBoot+JPA的技术手段来实施的,而且先后端的开发是分开的,经过使用AngularJs发送异步请求的方式经常会出现这个问题,由于同一个URL经过配置不一样的方法的方式来对应应用中的增删改查的方法(增——PUT,删——DELETE,改——POST,查——POST/GET分别对应列表查询和单个的信息查询)。</span></p> <p><strong><span style="font-size: 18pt;">4:查看对应的报错异常类的相关信息,有时也能帮助咱们更快更好更全面的了解此异常触发的时机,好比:</span></strong></p> <p><a title="org.springframework.web.HttpRequestMethodNotSupportedException API" href="http://www.7-sun.com/doc/spring2.5_doc_cn/index.html?org/springframework/web/HttpRequestMethodNotSupportedException.html" target="_blank"><strong><span style="font-size: 18pt;"><img src="https://images2015.cnblogs.com/blog/475698/201604/475698-20160407222416453-1066288987.png" alt=""></span></strong></a></p> <p> </p></div>html