Ank*_*kur 4 java servlets http-status-code-405
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我添加了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);
}
}
Run Code Online (Sandbox Code Playgroud)
另一个编辑:所以基本上我不能做我正在做的事情.我需要的是,用户提交一个帖子请求,然后我将他/她引回到使用Get方法而不是Post的servlet.如何在不收到错误的情况下进行此推荐?提前致谢.
(抱歉我之前发布的错误答案,我删除了它).
显然,URL /EditObject映射在另一个没有doPost()方法覆盖的servlet上.它也会被调用,RequestDispatcher#forward()因为当前运行HTTP请求的方法是POST.在默认情况下 HttpServlet#doPost()如果您的实际意图是火中的GET请求,以便实现将返回HTTP 405 doGet()的方法将被调用,那么你应该宁愿使用HttpServletResponse#sendRedirect()来代替.
response.sendRedirect("/EditObject?id="+objId);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26228 次 |
| 最近记录: |