Je suis un débutant et je fais un petit programme d’enregistrement avec une base de données. Mais j’essaie d’exécuter ceci mais cela me donne quelques erreurs. Aidez-moi:
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
Et voici mes codes register.html
:
<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>
Voici mes codes Register.Java
:
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();
}
}
Et voici mon 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>
L'aide serait appréciée !!
Le problème est que vous avez mappé votre servlet sur /register.html
et qu'il attend la méthode POST, car vous avez implémenté uniquement la méthode doPost()
. Ainsi, lorsque vous ouvrez la page register.html
, la page HTML ne sera pas ouverte avec le formulaire, mais le servlet qui gère les données du formulaire.
Lorsque vous soumettez le formulaire POST à une URL non existante, le conteneur Web affiche 405 erreur (méthode non autorisée) au lieu de 404 (introuvable).
Pour réparer:
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/Register</url-pattern>
</servlet-mapping>
Je pense que votre problème peut être dans le modèle d'URL. En changeant
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/Register</url-pattern>
</servlet-mapping>
et
<form action="/Register" method="post">
peut résoudre votre problème
Remplacez la méthode de service comme ceci:
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
Et voila!