当前位置: 首页 > 面试题库 >

HTTP状态405-此URL不支持HTTP方法POST

酆鸿哲
2023-03-14
问题内容

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);


 类似资料:
  • 问题内容: 我无法使页面正常工作。我有要发布的form方法和servlet实现。但是,它不断向我显示我不支持 POST 方法。 我只是想做一个简单的网站,并将值插入到我的MySQL DB中。 静态页面: Servlet: web.xml: 编辑:删除doGet(request,response); 问题答案: 这是因为您在打电话时并未实际实现。这是doGet()的默认实现,会引发错误,指出该方法不

  • 我有以下控制器: 13-feb-2016 16:55:09.442警告[http-apr-8080-exec-9]org.springframework.web.servlet.PageNotFound.HandleHttpRequestMethodNotSupported请求方法“Put”不受支持 我不明白这怎么可能。下面是我的依赖项: 编辑2: 2016-02-14 12:30:56 DEBU

  • 问题内容: 我收到此错误: 我正在尝试做的是创建一个带有下拉框的表单,该表单会根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应运行.jsp页面中的函数,然后提交提交的页面,然后在框中再次加载相应的值。 但是我收到此HTTP状态405错误。我在互联网上搜索了解决方案,但找不到任何有帮助的方法。这是我的代码的相关部分: jsp页面的一部分 控制器的一部分: 我怎么会得到这个

  • 我收到这个错误:< code>HTTP状态405 -不支持请求方法“POST ” 我想做的是创建一个带有下拉框的表单,该下拉框根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应该运行. jsp页面中的函数,然后提交的页面再次加载框中的相应值。 但是我收到此HTTP状态405错误。我已经在互联网上搜索了解决方案,但找不到任何有帮助的东西。以下是我的代码的相关部分: jsp页

  • 我有Spring MVC的Spring Security。当我尝试注册时,它给了我405个不支持的“帖子”。我已在安全配置中禁用csrf令牌。让我知道我哪里出错了? 我的登录页面: 授权由LoginController处理: 这是我的Spring Security配置类:

  • 当我尝试实现Spring Security性时,出现以下错误- 控制器: web.xml Spring-security.xml 登录名。jsp 错误:- http://localhost:8080/EmployeeManagement/j_spring_security_check