当编写Servlet时出现type Status report message HTTP method GET is not supported by this URL description The specified HTTP method is not allowed for the requested resource.

  直接看我代码再看解释就懂了

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.jboss.weld.context.ApplicationContext;

public class ServletLogin extends HttpServlet{
 
     private String username;
     private String password;
     
    /* public void doGet(HttpServletRequest request,HttpServletResponse reponse){
         this.username=(String)request.getParameter("username");
         this.password=(String)request.getParameter("password");
         System.out.println("123");
     }
     
     public void doPost(HttpServletRequest request,HttpServletResponse reponse){
         this.username=(String)request.getParameter("username");
         this.password=(String)request.getParameter("password");
         System.out.println("456");
     }*/
     
     
      public void init(){
          //四个域对象(servletcontext ,Session,Request,page)
          ServletConfig application=this.getServletConfig();//此对象获得局部变量
          ServletContext application1=this.getServletContext();//此对象获得全局变量
          String username=application.getInitParameter("username");
          String password=application.getInitParameter("password");
          String var=application1.getInitParameter("var");
          String var1=application.getInitParameter("var");
          System.out.println(var);
          System.out.println(var1);
          System.out.println(password);
          System.out.println(username);
          System.out.println("789");
        // if(this.username.equals(username)&&this.password.equals(password))
            //request.sendRedirect("MyJsp.jsp");
      }
     
     }
       
    
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Xuguang5</display-name>
     <!-- 声明全局变量 -->
   <context-param>
	        <param-name>var</param-name>
	        <param-value>我是全局变量</param-value>   
  </context-param>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 
  <servlet>
	    <servlet-name>ServletLogin</servlet-name>
	    <servlet-class>ServletLogin</servlet-class>
	       <!-- 声明局部变量 -->
	    <init-param>
	        <param-name>username</param-name>
	        <param-value>我是局部变量1</param-value>
	    </init-param>
	    
	    <init-param>
	        <param-name>password</param-name>
	        <param-value>我是局部变量2</param-value> 
	    </init-param>
  </servlet>
   <servlet-mapping>
        <servlet-name>ServletLogin</servlet-name>
        <url-pattern>/ServletLogin</url-pattern>
   </servlet-mapping>
   
  <!--  
   <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>LoginFilter</filter-class>
        <init-param>
        <param-name>name</param-name>
        <param-value>true1</param-value>
        </init-param>
  </filter>
  
  <filter-mapping>
	  <filter-name>LoginFilter</filter-name>
	  <url-pattern>/*</url-pattern>
	  <dispatcher>REQUEST</dispatcher>
  </filter-mapping> -->
</web-app>

  代码当我把doGet()方法注释掉后就会出现这种情况,原因是doGet()/doPost()方法主要用于处理表单提交过来的数据,在表单<form></form>中method属性由于默认的是get方式提交也就是调用doGet()方法,当是method是POST方式提交时就是调用doPost()方法。即使我们没有编写jsp,我们直接用URL访问servlet时发送的时Http请求,servlet默认访问doGet方法,但是我们程序中没有重写父类的doGet()方法,而父类的doGet()方法又不支持这种URL方式,所以出现HTTP method GET is not supported by this URL这种错误。只需要重写doGet方法就可以。

        当我们用JSP编写表单提交数据到servlet时如果我们<form>中的属性method是设置了doPOST/doGet方法,但是我们servlet还是没有重写doPOST/doGet方法还是会出现一样的问题。如下图(这里就举没有重写doPOST的形式)

成长就是将哭声调成静音的过程
原文地址:https://www.cnblogs.com/weixiaoling/p/6298498.html