【问题标题】:doPost super causing - HTTP Status 405doPost 超级导致 - HTTP 状态 405
【发布时间】:2013-12-08 04:10:59
【问题描述】:

到目前为止,我认为从您的 servlet 的 doPost(req, resp){} 调用 super.doPost(req, resp) 是一种常见的做法 但这是我面临的问题 - 我有一个非常简单的 servlet,它有一个 doPost(req, resp) ,因为它是从 eclipse 自动生成的方法,所以它有 super.doPost(req, resp) 这很好,因为它正在调用它的父 doPost() 但我得到了

HTTP 状态 405 - 此 URL 不支持 HTTP 方法 GET 每当 servlet 被击中时。 我浏览了很多帖子和this post

一直在谈论同样的问题,建议的解决方案之一是删除 super.doGet()。

我对我的 Post 方法做了同样的事情,令我惊讶的是它起作用了!!!

我找不到这样做的合乎逻辑的原因。有人可以解释发生了什么吗? 为什么是

405 由于调用 super.doPost() 而闪烁。

谢谢, 索拉布。

【问题讨论】:

    标签: servlets http-status-code-405


    【解决方案1】:

    HttpServlet.doPost 的默认实现返回 405 错误(方法不允许)。如果要在 servlet 中支持 POST 方法,则必须实现 doPost 方法。

    这是code of HttpServlet.doPost

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_post_not_supported");
        if (protocol.endsWith("1.1")) {
            resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
        } else {
            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
        }
    }
    

    【讨论】:

    • 所以我们扩展了 HttpServlet 和 @Override doPost 但在我们的实现中我们不调用它的 super ,因为调用 super 会给出这个消息。嗯....阅读您的回复后,我还通过了link。明白了!!!
    猜你喜欢
    • 2013-10-08
    • 2011-07-19
    • 1970-01-01
    • 2015-12-27
    • 2017-05-20
    • 2017-06-15
    • 2018-05-27
    • 2023-03-29
    相关资源
    最近更新 更多