繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM