1. 程式人生 > >HTTP method POST is not supported by this URL 詳解方案

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