gpt4 book ai didi

java - 收到错误 HTTP 状态 405 - 此 URL 不支持 HTTP 方法 GET 但从未使用过 `get`?

转载 作者:可可西里 更新时间:2023-11-01 06:35:47 29 4
gpt4 key购买 nike

我是初学者,正在制作一个带有数据库的小型注册程序,但我正在尝试运行它,但它给了我一些错误,请帮助:

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>

帮助将不胜感激!!

最佳答案

问题是您将 servlet 映射到 /register.html 并且它需要 POST 方法,因为您只实现了 doPost() 方法。因此,当您打开 register.html 页面时,它不会打开带有表单的 html 页面,而是打开处理表单数据的 servlet。

或者,当您将 POST 表单提交到不存在的 URL 时,Web 容器将显示 405 错误(方法不允许)而不是 404(未找到)。

修复:

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

关于java - 收到错误 HTTP 状态 405 - 此 URL 不支持 HTTP 方法 GET 但从未使用过 `get`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624442/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com