Servlets 在servlet、DB应用程序中,第二个请求的响应与第一个请求的响应不同

Servlets 在servlet、DB应用程序中,第二个请求的响应与第一个请求的响应不同,servlets,jdbc,Servlets,Jdbc,我有一个简单的应用程序,它将用户名和密码作为输入,并检查此组合是否在数据库中。在我的第一个请求中,当我给出正确的用户名和密码时,它会显示“登录成功”,但当我给出第二个请求时,它会显示“登录失败”,尽管我给出了正确的详细信息。但当我重新启动web服务器并发出第一个请求时(就像我重新启动一样),它再次显示“登录成功”。但在第二次请求时,它再次发出失败声明 package com.servlets; import java.io.IOException; import java.io.PrintWr

我有一个简单的应用程序,它将用户名和密码作为输入,并检查此组合是否在数据库中。在我的第一个请求中,当我给出正确的用户名和密码时,它会显示“登录成功”,但当我给出第二个请求时,它会显示“登录失败”,尽管我给出了正确的详细信息。但当我重新启动web服务器并发出第一个请求时(就像我重新启动一样),它再次显示“登录成功”。但在第二次请求时,它再次发出失败声明

package com.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

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

public class LoginDbServlet extends HttpServlet 
{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String name=req.getParameter("UserName");
        String pass=req.getParameter("password");
        Boolean loginstatus=userauthentication(name,pass);
        PrintWriter out=resp.getWriter();
        if(loginstatus)
        {
            out.println("login success");
        }
        else
        {
            out.println("login failure");
        }
}
    public boolean userauthentication(String name,String pass)
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        Connection con=null;
        Statement stmt=null;
        ResultSet rs=null;

        try
        {
            con=DriverManager.getConnection("jdbc:mysql://localhost/lara");
            stmt=con.createStatement();
            rs=stmt.executeQuery("select * from lara where username='"+name+"'and password='"+pass+"';");
            return rs.next();
        }
        catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        finally
        {
            try
            {
                if(rs!=null)
                {
                    rs.close();
                    rs=null;
                }
            }
            catch (SQLException e) 
            {
                System.out.println(e);
            }
            try
            {
                if(con!=null)
                {
                    con.close();
                    con=null;
                }
            }
            catch (SQLException e) 
            {
                System.out.println(e);
            }
            try
            {
                if(stmt!=null)
                {
                    stmt.close();
                    stmt=null;
                }
            }
            catch (SQLException e) 
            {
                System.out.println(e);
            }
        }
    }
}
这是控制台中的stacktrace

java.sql.SQLException: ResultSet is from UPDATE. No Data.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6998)
    at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3945)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3488)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2460)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.servlets.LoginDbServlet.userauthentication(LoginDbServlet.java:50)
    at com.servlets.LoginDbServlet.service(LoginDbServlet.java:23)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
java.sql.SQLException: ResultSet is from UPDATE. No Data.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6998)
    at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3945)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3488)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2460)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.servlets.LoginDbServlet.userauthentication(LoginDbServlet.java:50)
    at com.servlets.LoginDbServlet.service(LoginDbServlet.java:23)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
java.sql.SQLException:结果集来自更新。没有数据。
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
位于com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6998)
位于com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3945)
位于com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3488)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2460)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:813)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:47)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:411)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
位于com.servlets.LoginDbServlet.userauthentication(LoginDbServlet.java:50)
位于com.servlets.LoginDbServlet.service(LoginDbServlet.java:23)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
位于org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
位于org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
位于org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
位于org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
位于java.lang.Thread.run(未知源)
java.sql.SQLException:结果集来自更新。没有数据。
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
位于com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6998)
位于com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3945)
位于com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3488)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2460)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:813)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:47)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:411)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
位于com.servlets.LoginDbServlet.userauthentication(LoginDbServlet.java:50)
位于com.servlets.LoginDbServlet.service(LoginDbServlet.java:23)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.j