當編寫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的形式)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM