HTTP method POST is not supported by this URL 詳解方案
報這個錯誤提示有兩方面問題:
1、在servlet中沒有呼叫post()方法引起的
2、在serlvet中跳轉沒有用外跳(response.sendRedirect())
我在做專案時,遇到的是1的錯誤,在servlet中沒有呼叫post().我在jsp頁面中提交一個XMLHTTPRequest請求到servlet時,在相應的Servlet中沒用到post(),因此報這個錯誤。解決方案:
在Servlet中呼叫這個方法就行了。
對於遇到2的錯誤的朋友,可以採用以下解決方案:
把request.getRequestDispatcher("FindByIdServlet?id="+commentPostId).forward(request, response);
改成response.sendRedirect("FindByIdServlet?id="+commentPostId);
redirect和forward的區別:
1) redirect 方式
response.sendRedirect("test.jsp");
頁面的路徑是相對路徑。sendRedirect可以將頁面跳轉到任何頁面,不一定侷限於本web應用中,如:
response.sendRedirect("http://www.baidu.com");
跳轉後瀏覽器位址列變化,會變成你跳轉到的頁面的地址。
這種方式要傳值出去的話,只能在url中帶parameter或者放在session中,無法使用request.setAttribute來傳遞。
2) forward方式
RequestDispatcher dispatcher = request.getRequestDispatcher("/a.jsp");
dispatcher .forward(request, response);
頁面的路徑是相對路徑。forward方式只能跳轉到本web應用中的頁面上。
跳轉後瀏覽器位址列不會變化。
使用這種方式跳轉,傳值可以使用三種方法:url中帶parameter,session,request.setAttribute