2014-05-13 11 views
5

Ich bin ein Anfänger und macht ein kleines Registrierungsprogramm mit Datenbank, aber ich versuche, dies zu laufen, aber es gibt mir einig Fehler pls help:Fehler erhalten HTTP-Status 405 - HTTP-Methode GET wird von dieser URL nicht unterstützt, aber nicht verwendet "get" jemals?

HTTP Status 405 - HTTP method GET is not supported by this URL 

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. 
Apache Tomcat/8.0.5 

Und hier ist meine register.html Codes:

<html> 
<head lang="en"> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
<form action="Register" method="post"> 
    Name: <input type="text" name="name"> 
    Email: <input type="text" name="email"> 
    Password: <input type="password" name="password"> 
    Country: 

    <select name="userCountry"> 
     <option>India</option> 
     <option>Pakistan</option> 
     <option>Other</option> 
    </select><br><br> 

    <input type="submit" value="register"> 
</form> 
</body> 
</html> 
hier

ist meine Register.java Codes:

import java.sql.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 

public class Register extends HttpServlet{ 
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{ 
     response.setContentType("text/html"); 
     PrintWriter out=response.getWriter(); 

     String n=request.getParameter("name"); 
     String p=request.getParameter("password"); 
     String e=request.getParameter("email"); 
     String c=request.getParameter("userCountry"); 

     try{ 
      Connection con=DriverManager.getConnection(
        "jdbc:mysql://localhost:8888", "root", "1234" 
      ); 

      PreparedStatement ps=con.prepareStatement("insert into REGISTERUSER values(?, ?, ?, ?)"); 

      ps.setString(1,n); 
      ps.setString(2,p); 
      ps.setString(3,e); 
      ps.setString(4,c); 

      int i=ps.executeUpdate(); 
      if(i>0){ 
       out.print("Registered successfully.."); 
      } 

     }catch(Exception d){d.printStackTrace();} 
     out.close(); 
    } 
} 

Und hier ist mein Web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

    <servlet> 
     <servlet-name>Register</servlet-name> 
     <servlet-class>Register</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Register</servlet-name> 
     <url-pattern>/register.html</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>register.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

Hilfe würde geschätzt werden !!

+0

Fügen Sie den mysql Connector jar dem lib-Pfad Ihrer Anwendung in Ihrer IDE hinzu. –

+1

Oh Mann ... Manchmal fühle ich mich selbst zu treten ... Becoz ich vergesse alle dumme Fehler: p – user3631223

Antwort

10

Das Problem ist, dass Sie Ihr Servlet /register.html zugeordnet und es erwartet POST-Methode, weil Sie nur doPost() Methode implementiert. Wenn Sie also die Seite register.html öffnen, öffnet sich die HTML-Seite nicht mit dem Formular, sondern mit dem Servlet, das die Formulardaten verarbeitet.

Alternativ, wenn Sie das POST-Formular an eine nicht vorhandene URL senden, zeigt der Web-Container den Fehler 405 (Methode nicht erlaubt) anstelle von 404 (nicht gefunden) an.

zu beheben:

<servlet-mapping> 
    <servlet-name>Register</servlet-name> 
    <url-pattern>/Register</url-pattern> 
</servlet-mapping> 
+1

Oder alternativ erstellen Sie eine doGet() überschreiben, die einfach doPost() aufruft. – FoggyDay

+0

Ich versuchte, wie Sie sagten, aber es gibt mir nur 'BLANK WHITE PAGE' pls Hilfe :( – user3631223

+0

Jetzt kann ich das Formular anzeigen, aber ... wenn ich klicke, um Schaltfläche zu übermitteln, wird es auf weiße leere Seite umgeleitet und nicht angezeigt" erfolgreich registriert "Nachricht ... weder mein Material wird in Datenbank gespeichert ... – user3631223

2

Ich denke, das Problem in dem URL-Muster sein. Ändern

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

und

<form action="/Register" method="post"> 

kann Ihr Problem

+1

Es sollte '

' – Braj

+0

Ja, ich weiß. Vielen Dank für die Abholung, ich habe die Antwort aktualisiert –

+1

URL/Register funktioniert nur für Webapp im Einsatz als ROOT (ohne Kontext) –

0

außer Kraft setzen Service-Methode, wie dieses Problem zu beheben:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doPost(request, response); 
} 

und voila!

Verwandte Themen