【问题标题】:Servlet handling POST request as GET将 POST 请求作为 GET 处理的 Servlet
【发布时间】:2010-09-02 02:42:18
【问题描述】:

根据here 给出的示例,我编写了一个 servlet 来处理 POST 和 GET 请求。我有以下内容:

具有以下格式的 html:

form method="POST" action="servlet/RequestType"

然后输入:

input type="submit" value="POST"

以下doGetdoPost 方法:

public void doGet(HttpServletRequest req, HttpServletResponse rsp)   throws ServletException, IOException {
    rsp.setContentType("text/html");
    PrintWriter out = rsp.getWriter();

    String requestType = req.getMethod();

    out.println("<html>");
    out.println("<head><title> Request Type: " + requestType
       + " </title></head>");
    out.println("<body>");
    out.println("<p>This page is the result of a " + requestType
    + " request.</p>");
    out.println("</body></html>");
}

public void doPost(HttpServletRequest req, HttpServletResponse rsp) throws ServletException, IOException {
    doGet(req, rsp);
}

输出应该是:

此页面是 POST 请求的结果。

但我得到了:

此页面是 GET 请求的结果。

有人知道为什么会这样吗?

【问题讨论】:

  • 我看不到你的 HTML。您确定在 HTML
    元素中设置了属性 method="POST" 吗?尝试删除 doPost 方法。您应该会收到一条消息,说明该操作不受支持。
  • 是的,我刚刚编辑了我的帖子以显示我的表单,它以前没有显示,因为 html 标签,我想。无论如何,这是我的表单:
  • 我遇到了类似的问题..检查这个解决方案:stackoverflow.com/questions/8695795/…

标签: java http servlets


【解决方案1】:

我知道,这并不能解决,但是在调用 doGet() 之前尝试检查 doPost() 中的请求方法。 使用 System.out.println() - 你会看到会写什么。如果什么都不写,则意味着您的请求始终是 GET。

【讨论】:

    【解决方案2】:

    您需要按下表单的提交按钮来发送 POST 请求。

    也就是说,这个 2001 年的教程让我很痒。我建议去阅读一个更新/体面的。

    【讨论】:

    • 是的,BalusC,我按下了。这就是我得到这个结果的原因。我会尝试寻找另一个教程。有什么建议么?谢谢!
    猜你喜欢
    • 2017-05-14
    • 2013-01-17
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多