org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not ...

<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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="java plain">at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</code></div><div class="line number23 index22 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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;">&nbsp; &nbsp; &nbsp;之前分析過一些異常相關的問題,自從進入新公司以後,也作了若干個項目,其中也遇到了許多的問題,不過每個新的問題都記錄下來本身的分析、解決之道的習慣沒有保持下來,主要事情比較多,上班和住的地方相對比較遠,天天早出晚歸,精力時間有限。哈哈,不過這個問題遇到幾回了,前幾天同事又遇到了,讓我萌生了繼續記錄下來的想法。</span></p> <p><span style="font-size: 16px;">&nbsp; &nbsp; &nbsp;仍是老辦法,遇到程序報錯,先從頭至尾將報錯信息過一遍,分析、解決的思路無怪乎下面幾種:</span></p> <p><span style="font-size: 16px;">&nbsp; &nbsp; &nbsp;1:若是是之前遇到過而且分析解決過的,那麼問題就迎刃而解了——這就是積累的重要性的體現了</span></p> <p><span style="font-size: 16px;">&nbsp; &nbsp; &nbsp;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">&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;</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;">&nbsp; &nbsp; &nbsp;目前的項目採用的是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>&nbsp;</p></div>html

相關文章
相關標籤/搜索