Java 使用Servlet和Mysql进行简单身份验证

Java 使用Servlet和Mysql进行简单身份验证,java,xml,servlets,Java,Xml,Servlets,我正在尝试创建简单的登录页面。这是我的密码: Servlet: import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax

我正在尝试创建简单的登录页面。这是我的密码:

Servlet:

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @WebServlet("/MySQLConnect")
    public class MySQLConnect extends HttpServlet {
        private static final long serialVersionUID = 1L;

       //do post method calling
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            String user = request.getParameter("user");
            String pass = request.getParameter("pass");
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javademo", "root", "admin");
                //prepared statement for calling query
                PreparedStatement pst = conn.prepareStatement("Select user,pass from login where user=? and pass=?");
                pst.setString(1, user);
                pst.setString(2, pass);
                ResultSet rs = pst.executeQuery();
                if (rs.next()) {
                    out.println("Correct login credentials");
                } 
                else {
                    out.println("Incorrect login credentials");
                }
            } catch (Exception e) {

                e.printStackTrace();
            }
            finally{}

        }
        }
   <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        <form method="post" action="MySQLConnect">        
            UserName :<input type="text" name="user" /><br/><br/>
            Password :<input type="password" name="pass" /><br/><br/>
            <input type="submit" value="Login" />
        </form>
    </body>
    </html>
index.html:

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @WebServlet("/MySQLConnect")
    public class MySQLConnect extends HttpServlet {
        private static final long serialVersionUID = 1L;

       //do post method calling
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            String user = request.getParameter("user");
            String pass = request.getParameter("pass");
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javademo", "root", "admin");
                //prepared statement for calling query
                PreparedStatement pst = conn.prepareStatement("Select user,pass from login where user=? and pass=?");
                pst.setString(1, user);
                pst.setString(2, pass);
                ResultSet rs = pst.executeQuery();
                if (rs.next()) {
                    out.println("Correct login credentials");
                } 
                else {
                    out.println("Incorrect login credentials");
                }
            } catch (Exception e) {

                e.printStackTrace();
            }
            finally{}

        }
        }
   <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        <form method="post" action="MySQLConnect">        
            UserName :<input type="text" name="user" /><br/><br/>
            Password :<input type="password" name="pass" /><br/><br/>
            <input type="submit" value="Login" />
        </form>
    </body>
    </html>

在此处插入标题
用户名:

密码:

Web.xml

<display-name>AuthenticationUsingMySQL</display-name>

        <servlet>
        <servlet-name>MySQLConnect</servlet-name>
        <servlet-class>MySQLConnect</servlet-class>
        </servlet>
    <servlet-mapping>
        <servlet-name>MySQLConnect</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
使用MySQL进行身份验证
MySQLConnect
MySQLConnect
MySQLConnect
/登录
30
我正在尝试使用打开页面


但它显示的是HTTP状态405-此URL不支持HTTP方法GET

您不能在浏览器中直接使用te URL,因为您的webservlet支持POST请求,所以请尝试仅从JSP发布请求或使用POSTMAN等工具,SOAPUI。

如果您试图在浏览器中打开该链接,则该错误是有意义的。您需要使用像Fiddler这样的工具,或者设置javascript测试方法来测试代码。看起来您正在代码中构造POST方法。默认情况下,Web浏览器使用GET访问Web资源,因此需要一个能够执行POST的不同工具。否则,您需要修改代码,使其接受GET请求。

当您在浏览器上转到时,您会将GET请求发送到不提供GET方法的servlet。
只需转到,它就会工作。

您同时拥有基于注释的servlet config@WebServlet和web.xml,为什么?请调用登录页面。这将显示登录表单。通过post提交表单应该调用您的servlet。也许您需要修复/检查一些URL。