it-swarm.com.de

fehler abrufen HTTP Status 405 - HTTP-Methode GET wird von dieser URL nicht unterstützt, aber nicht verwendet.

Ich bin ein Anfänger und mache ein kleines Registrierungsprogramm mit Datenbank. Aber ich versuche dies auszuführen, aber es gibt mir einige Fehler. Pls helfen dabei:

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 sind 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 sind 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äre dankbar !!

7
user3631223

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

Wenn Sie alternativ POST Formular an eine nicht vorhandene URL senden, zeigt der Web-Container 405 Fehler (Methode nicht zulässig) anstelle von 404 (nicht gefunden) an.

Reparieren:

<servlet-mapping>
    <servlet-name>Register</servlet-name>
    <url-pattern>/Register</url-pattern>
</servlet-mapping>
10
Leos Literak

Ich denke, Ihr Problem kann im URL-Muster liegen. Ändern

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

und

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

kann Ihr Problem beheben

2
Totò

Überschreiben Sie die Servicemethode wie folgt: 

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

Und Voila!

1
Mihir Deshpande