doPost 超级导致 - HTTP 状态 405
Posted
技术标签:
【中文标题】doPost 超级导致 - HTTP 状态 405【英文标题】:doPost super causing - HTTP Status 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() 而闪烁。
谢谢, 索拉布。
【问题讨论】:
【参考方案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。明白了!!!以上是关于doPost 超级导致 - HTTP 状态 405的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 状态 405 - 此 URL 不支持 HTTP 方法 GET [重复]
HTTP 状态 405 - 此 URL java servlet 不支持 HTTP 方法 POST [重复]
烧瓶 url_for 导致 escape_chars http_405