2016-06-23 6 views
1

versuche ich, Eingaben vom Endbenutzer über ein Formular zu erhalten. Ich habe das Formular mit jsp erstellt.HTTP-Status 405 - Die HTTP-Methode GET wird von dieser URL nicht unterstützt. Bei der Verwendung von Jsp

welcome.jsp

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Welcome</title> 
</head> 
<body> 
    <form action="welcome" method="post"> 
     <input type="text" value="username" /> 
     <input type="text" value="password" /> 
     <input type="submit" value="login" /> 
    </form> 
</body> 
</html> 

Die Informationen, die der Benutzer eingeben, wird dann an ein Servlet gehen, wo es an die Konsole ausgedruckt werden.

MyApp.java

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet("/welcome") 
public class MyApp extends HttpServlet { 

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

    req.getRequestDispatcher("/WEB-INF/welcome.jsp").forward(req, resp); 

    String username = req.getParameter("username"); 
    String password = req.getParameter("password"); 

    System.out.println("Name: " + name); 
    System.out.println("Password: " + password); 
} 
} 

web.xml

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

<servlet> 
    <servlet-name>MyApp</servlet-name> 
    <servlet-class>main.com.myfirstapp.MyApp</servlet-class> 
</servlet> 
</web-app> 

begegne ich mein Problem, wenn ich mein Programm auf dem Server auszuführen. Dies ist der Fehler, den ich

bin immer
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. 
+0

* "Wenn ich mein Programm auf dem Server ausführen" * Dies ist eine wirklich seltsame Beschreibung des Öffnens einer JSP-Seite in einem Webbrowser. Oder hast du etwas wie * rightclick servlet class in meiner IDE gemacht, wähle Option run on server * orso? Wie genau ist die URL in der Adresszeile des Browsers? Ist es das der JSP, das das HTML-Formular enthält, oder ist es das des Servlets, das überhaupt keine 'doGet()' -Methode hat? Haben Sie zum Beispiel http://stackoverflow.com/q/2349633 gelesen, das im Duplikat Ihrer vorherigen Frage verlinkt ist? – BalusC

+0

in der Form und speziell in der Aktion starten Sie es nicht mit "/" nur lassen Sie es "Willkommen" sein, weil die Annotation bereits einen Schrägstrich hatte – PacMan

+0

@BalusC Ja, ich habe rechts auf MyApp.java -> auf dem Server laufen . Die URL im Browser lautet "http: // localhost: 8080/MyFirstApp/welcome". Ich habe diese Frage auch gelesen und meine Frage aktualisiert. Ich bekomme immer noch den gleichen Fehler, obwohl ich es noch nicht verstanden habe. – TheRealRave

Antwort

1

i bereits aus dem gleichen Problem leiden, auch ich Sie schlagen vor, dass Slash von der Aktion zu entfernen und es nur <form action="welcome" method="post"> lassen, da Sie @annotation verwenden, so gibt es keine Wenn Sie web.xml benötigen, können Sie es löschen. eine andere Sache, die Sie nicht warten, das Ergebnis in Ihrem Servlet, weil es keinen Namen im Formular ist, hier ist ein Beispiel Sie geben String name = req.getParameter("name"); in der Form müssen Sie den Namen statt Wert wie diese setzen <input type="text" name="name" /> und das gleiche für die Schließlich wird Ihr Formular wie folgt aussehen:

<form action="welcome" method="post"> 
     <input type="text" name="name" /> 
     <input type="text" name="passcode" /> 
     <input type="submit" value="submit" /> 
</form> 
+0

Danke für die Hilfe, das half, weil ich vorher falsch gemacht habe. Aber ich bekam immer noch den Fehler, also schaute ich mir andere Servlet-Beispiele auf github an und glücklicherweise fand ich einen, der '@WebServlet (name = "welcome", value = "/") '' verwendete – TheRealRave

Verwandte Themen