![](/img/trans.png)
[英]HTTP Status 405 - HTTP method POST is not supported by this URL java servlet
[英]HTTP Status 405 - HTTP method POST is not supported by this URL
我收到錯誤HTTP Status 405 - HTTP method POST is not supported by this URL
當我使用下面的代碼(下面)時HTTP Status 405 - HTTP method POST is not supported by this URL
...引起麻煩的行(顯然)是getServletContext().getRequestDispatcher("/EditObject?id="+objId).forward(request, response);
package web.objects;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.ObjDetailsDao;
@SuppressWarnings("serial")
public class EditObjectText extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int objId = Integer.parseInt(request.getParameter("objId"));
String text = (String)request.getParameter("description");
ObjDetailsDao oddao = new ObjDetailsDao();
try {
oddao.modifyText(text, objId);
/////////////
getServletContext().getRequestDispatcher("/EditObject?id="+objId).forward(request, response);
////////////
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
編輯:我添加了throws ServletException, IOException
建議,但這並沒有改變錯誤。
編輯:EditObject servlet看起來像這樣
@SuppressWarnings("serial")
public class EditObject extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
int objId = Integer.parseInt(request.getParameter("id"));
dispPage(objId, request, response);
}
private void dispPage(int objId, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
// ... lots of code in here
getServletContext().getRequestDispatcher("/jsp/objectPageEdit.jsp").forward(request, response);
}
}
另一個編輯:所以基本上我不能做我正在做的事情。 我需要的是,用戶提交一個帖子請求然后我將他/她引回到使用Get方法而不是Post的servlet。 如何在不收到錯誤的情況下進行此推薦? 提前致謝。
(抱歉我之前發布的錯誤答案,我刪除了它) 。
顯然,URL /EditObject
映射到另一個沒有doPost()
方法覆蓋的servlet上。 它也會在RequestDispatcher#forward()
上調用,因為當前運行HTTP請求的方法是POST。 默認的 HttpServlet#doPost()
實現將返回HTTP 405.如果您的實際意圖是在其上發出GET請求以便調用doGet()
方法,那么您應該使用HttpServletResponse#sendRedirect()
來代替。
response.sendRedirect("/EditObject?id="+objId);
將doPost()添加到EditObject類:
@SuppressWarnings("serial")
public class EditObject extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
process(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
process(request, response);
}
public void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
int objId = Integer.parseInt(request.getParameter("id"));
dispPage(objId, request, response);
}
private void dispPage(int objId, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
// ... lots of code in here
getServletContext().getRequestDispatcher("/jsp/objectPageEdit.jsp").forward(request, response);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.