首页 > Web开发 > 详细

405: HTTP method GET is not supported by this URL

时间:2015-03-07 02:13:53      阅读:488      评论:0      收藏:0      [点我收藏+]

405: HTTP method GET is not supported by this URL

?

先看错误代码:

?

public class WXSenderServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doGet(req, resp);
		resp.getWriter().print("WXSenderServlet----doGet()");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doPost(req, resp);
		resp.getWriter().print("WXSenderServlet----doPost()");
	}

}

?继承了HttpServlet而且实现了两个方法,并且:

<!-- Servlets -->
    <servlet>
        <servlet-name>WXSenderServlet</servlet-name>
        <servlet-class>pa.wechat.plugin.servlet.WXSenderServlet</servlet-class>
    </servlet>

    <!-- Servlet mappings  url-pattern???é???°????-->
    <servlet-mapping>
        <servlet-name>WXSenderServlet</servlet-name>
        <url-pattern>/wechatsender</url-pattern>
    </servlet-mapping>

?那为什么还会有错误呢?

?

?

哈哈哈,原来是因为super.doGet(req, resp);里面不是空的。

?

看一位网友的回答的不错,照抄了过来:

?

The?HttpServlet?basically follows the?template method pattern?where all non-overridden HTTP methods returns a HTTP 405 error "Method not supported". When you override such a method, you should?not?call?super?method, because you would otherwise still get the HTTP 405 error. The same story goes on for your?doPost()?method.

This also applies on?service()?by the way, but that does technically not harm in this construct since you?need?it to let the default implementation execute the proper methods. Actually, the whole?service()?method is unnecessary for you, you can just remove the entire method from your servlet.

The?super.init();?is also unnecessary. It‘s is only necessary when you override the?init(ServletConfig), because otherwise the?ServletConfig?wouldn‘t be set. This is alsoexplicitly?mentioned in the?javadoc. It‘s the only method which requires a?super?call.


Unrelated to the concrete problem, spawning a thread in a servlet like that is a bad idea. For more detail, start reading?this answer.

?

?

?

恩,就是这样的。

405: HTTP method GET is not supported by this URL

原文:http://zhonglunshun.iteye.com/blog/2189755

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!