gpt4 book ai didi

java - tomcat 说此 url 不支持 http 方法发布

转载 作者:行者123 更新时间:2023-11-28 22:47:38 24 4
gpt4 key购买 nike

我一直在通过 HTML 页面调用 servlet,我的 servlet 代码如下:

import java.sql.*;
import javax.servlet.http.*;
import java.io.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;

public class validation extends HttpServlet
{
static PrintWriter pw = null;
public void doPost(HttpServletResponse response, HttpServletRequest request) throws ClassNotFoundException, SQLException, IOException, ServletException
{
pw = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
RequestDispatcher rd = request.getRequestDispatcher("new.html");
Class.forName("java.sql.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/timetabledb", "root","`");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select password from users where username = '"+username+"';");
if(rs.next()==false)
{
pw.println("No such user found!");
}
else
{
if(password.equals(rs.getString("password")))
{
rd.forward(request, response);
}
else
{
pw.println("Invalid credentials!");
}
}
rs.close();
}
}

我的 html 页面是这样的:

<!DOCTYPE html>
<html>
<head>
<title>Login Page - SGMS</title>
<link rel="stylesheet" href="main.css" />
</head>

<body>
<div id = "container">
<div class = "welcome-head">
Welcome
</div>
<div class = "sw-head">
Semi-Automatic Schedule Generator & Maintenance Software
</div>
<span class="logo">
<img src="logo.gif" alt="Logo"/>
</span>
<div class = "form">
<form method="POST" action="validation">
<label for="inp-usr" class="inp">
<input type="text" name="username" id="inp-usr" placeholder="&nbsp;" required="required">
<span class="label">Username</span>
<span class="border"></span>
</label>
<br>
<label for="inp-pwd" class="inp">
<input type="password" name="password" id="inp-pwd" placeholder="&nbsp;" required="required">
<span class="label">Password</span>
<span class="border"></span>
</label>
<br><br><br>
<button class="validate-btn" onclick="show();">
Validate
</button>
</form>
</div>
</div>
</body>

</html>

但问题是,每当我运行所有这些时,应用程序服务器都会说,该 URL 不支持该 POST 方法。我经常遇到这个错误,请解释为什么会发生这种情况。我已经在我的 web.xml 中映射了 servlet

提前致谢。

最佳答案

您的 doPost 方法有误。您已将其声明为:

void doPost(HttpServletResponse response, HttpServletRequest request)
throws ClassNotFoundException, SQLException, IOException, ServletException

但正确的签名是这样的:

void doPost(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException

注意不同的参数顺序....

由于您的方法没有正确的签名,因此它不会覆盖继承的版本。这意味着您的版本永远不会被调用。相反,POST 请求调用继承的方法......其行为是说“不支持 POST”。

解决方法:

  1. 更正您的 doPost 方法的签名。 (异常也需要修复!)
  2. @Override 注释添加到此 ... 以及此类中的任何其他覆盖方法。
  3. 养成始终使用 @Override 的习惯,只要您打算重写方法...这样 Java 编译器就可以向您指出您的错误。

关于java - tomcat 说此 url 不支持 http 方法发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139540/

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