2016-03-30 23 views
0

Servletleri incelemeye başladım. Kod Servlet:Basit Servlet HTTP Durumu 405 - HTTP yöntemi GET bu URL tarafından desteklenmiyor.

package arver; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 
import java.io.PrintWriter; 

/** 
* Created by 35717 on 30.03.2016. 
*/ 
public class MainServlet extends HttpServlet { 
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     super.doGet(req, resp); 
     PrintWriter out = resp.getWriter(); 
     out.print("servlet"); 
    } 

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

Dosya web.xml

<?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" 
      version="3.0"> 

     <servlet> 
      <servlet-name>MainServlet</servlet-name> 
      <servlet-class>arver.MainServlet</servlet-class> 
     </servlet> 

     <servlet-mapping> 
      <servlet-name>MainServlet</servlet-name> 
      <url-pattern>/</url-pattern> 
     </servlet-mapping> 

    </web-app> 

Sunucu yanıtı: HTTP Durum 405 - HTTP yöntemi GET bu URL'den tarafından desteklenmeyen

tip Durum raporu

ileti HTTP yöntemi GET bu URL tarafından desteklenmemektedir

Açıklama İstenen kaynak için belirtilen HTTP yöntemine izin verilmiyor.

Apache Tomcat/

9.0.0.M4 neden HTTP Status 405 alıyorum - HTTP yöntemi GET bu Programda bu URL hatası desteklenmemektedir.

+0

Eğer bu servlet göndermek için attept nerede adresinin jsp/html dosyası göndermek. –

+0

Bu sunucuya nasıl çağrı yaptınız? URL? –

+0

Neden url modelini '/' olarak kullanın, ona bir alt yol verin. –

cevap

0

HttpServlet ve @Override doPost'u genişletiyoruz, ancak uygulamamızdaki süper mesaja süper çağrı yapılacağından bulamayız.

Super.doGet yaptığınızda (istek, yanıt); Servlet'in doGet() yönteminde, aslında HttpServlet sınıfının dogetini() çağırırsınız. Yani süper aramayı bırak. Bu gerekli değil.

Sadece bu satırları kaldırın:

super.doGet(req, resp); 
super.doPost(req, resp); 
1

Kullanım Ya

MainServlet.java

package arver; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 
import java.io.PrintWriter; 

/** 
* Created by 35717 on 30.03.2016. 
*/ 
public class MainServlet extends HttpServlet { 
    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
{   
     PrintWriter out = resp.getWriter(); 
     out.print("servlet"); 
    } 
} 

web.xml

<?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" 
      version="3.0"> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

     <servlet> 
      <servlet-name>MainServlet</servlet-name> 
      <servlet-class>arver.MainServlet</servlet-class> 
     </servlet> 

     <servlet-mapping> 
      <servlet-name>MainServlet</servlet-name> 
      <url-pattern>/MainServlet</url-pattern> 
     </servlet-mapping> 

    </web-app> 

URL böyle olmalı almak veya Post Yöntem: http://localhost:8080/Project adı/Ma Sürüm

+0

Evet, tüm etiketlerin yanıt anlamına gelir ve doğru kullanım jsp ile gösterilmesinin güzel olmadığını anlıyorum, ancak bu hatayı neden aldığımı anlamak istiyorum, Dışarı çıkabileceğimi düşündüm (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print ("servlet"); out.print (""); çıkışı.baskı (""); –

+0

tek bir servlet içinde get ve post yöntemlerini kullanmamalısınız. Yardım için –

+0

yöntemini kullanın ya da kullanmalısınız, maalesef yararlı bir yanıt olarak kayda değer bir itibara sahip olmayın. –

İlgili konular