私は初心者で、データベースを使用して小さな登録プログラムを作成していますが、これを実行しようとしていますが、エラーが発生します:
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
そしてここに私の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>
これが私の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();
}
}
そしてここに私の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>
助けていただければ幸いです!!
問題は、サーブレットを/register.html
にマップし、doPost()
メソッドのみを実装したため、POSTメソッドが必要です。したがって、register.html
ページを開くとき、フォームでhtmlページを開くのではなく、フォームデータを処理するサーブレットを開きます。
または、POSTフォームを存在しないURLに送信すると、Webコンテナは404(not found)ではなく405エラー(メソッドは許可されません)を表示します。
修正するには:
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/Register</url-pattern>
</servlet-mapping>
あなたの問題はURLパターンにあると思います。変化
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/Register</url-pattern>
</servlet-mapping>
そして
<form action="/Register" method="post">
あなたの問題を解決するかもしれません
次のようなサービスメソッドをオーバーライドします。
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
そして出来上がり!