修复 JDBC 在动态 web 项目中的问题

Fix JDBC in dynamic web project

我正在尝试通过 servlet 检查数据库中的数据,但是 html 页面没有读取 servlet 页面..

错误:

The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

我的登录页面:

<form action="validate" method="Post">
    User name:
    <br>
    <input type="text" name="username">
    <br>
    User password:
    <br>
    <input type="password" name="psw">
    <input type="submit" value="Submit">
</form>

我的 serlvlet 代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.SetContenttype("text/html");
    String uname = request.getParameter("username");
    String password = request.getParameter("psw");

    Class.forName("com.mysql.jdbc.Driver");
    Connection Con = DriverManager.getConnection("jdbc:mysql://localhost:3306/students", "root", "1234");
    PreparedStatement pstmt = Con.prepareStatement("SELECT * FROM data WHERE username = ? AND password = ?");
    pstmt.setString(1, uname);
    pstmt.setString(2, password);
    ResultSet rs = pstmt.executeQuery();
    if (rs.next()) {
        System.out.println("record found");
        RequestDispatcher rd = request.getRequestDispatcher("Stu.jsp");
        rd.forward(request, response);
    } else {
        System.out.println("record not found");
        RequestDispatcher rd = request.getRequestDispatcher("Login.html");
        rd.forward(request, response);
    }
    rs.close();
    pstmt.close();
    Con.close();

    doGet(request, response);
}

在您的登录页面中,您应该指定

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

同时检查您是否在 web.xml 中指定了 servlet 映射或使用 class 注释您的 servlet @WebServlet("/LoginServlet")

      <servlet>
        <servlet-name>servletname</servlet-name>
        <servlet-class>/LoginServlet</servlet-class>
      </servlet>

      <servlet-mapping>
        <servlet-name>servletname</servlet-name>
        <url-pattern>*.html</url-pattern>
      </servlet-mapping>

希望对您有所帮助!

当操作找不到指定的 servlet 时,就会出现此问题,它可能会引起很多反应。

  • 请检查您的@WebServlet 注释,它可能是

    @WebServlet(名称="validate")

类似的东西,你必须给它

@WebServlet(urlPatterns = "/validate")

,或者你可以使用

@WebServlet("/validate")

您可以在操作部分的表单中添加其他问题

<form action="${requestScope.getContextPath}/validate" method="Post">

希望我能有所帮助。