HTTP method GET is not supported by this URL

public class Servlet2 extends HttpServlet {

  @Override
  protected void doGet(HttpServletRequest req, 
      HttpServletResponse resp )throws ServletException, IOException {
	super.doGet(req, resp);
  }
	
  @Override
  protected void doPost(HttpServletRequest req, 
       HttpServletResponse resp)throws ServletException, IOException {
	//设置响应类型
	resp.setContentType("text/html;charset=utf-8") ;
	//从响应实例中获取打印流
	PrintWriter out = resp.getWriter() ;
	out.println("<html>") ;
	out.println("<head><title>servlet2</title></head>") ;
	out.println("<body>") ;
	out.println("从Servlet2中获取请求参数name的值:") ;
	out.println(req.getParameter("name")) ;
	out.println("</body>") ;
	out.println("</html>") ;
  }
}

此时我们访问:http://localhost:8000/../servlet2?name=test
就会出现:
     HTTP Status 405 - HTTP method GET is not supported by this URL
出现错误的原因
  1,继承HttpServlet的Servlet没有覆写对应请求和响应的处理方法即:doGet或
      doPost等方法;默认调用了父类的doGet或doPost等方法;
  2, 父类HttpServlet的doGet()或doPost()方法覆盖了你重写的doGet或doPost等
      方法;
      只要出现以上的情况之一,父类HttpServlet的doGet或doPost等方法的默认实现是
      返回状态代码为405的HTTP错误表示:对于指定资源的请求方法不被允许。
解决方法
  1,子类覆写父类的doGet或doPost等方法;
  2,在你的Servlert中覆写doGet或doPost等方法来处理请求和响应,不要调用父类
     HttpServlet的doGet() 和 doPost()方法,即:
     将doGet()方法中的 super.doGet(req, resp);
             改为:this.doPost(req , resp) ; 可以解决问题。

你可能感兴趣的:(html,servlet)