问题描述
<%@pageimport="java.sql.*"%><%!publicstaticfinalStringDBDRIVER="oracle.jdbc.driver.OracleDriver";publicstaticfinalStringDBURL="jdbc:oracle:thin:@localhost:1521:TT";publicstaticfinalStringDBUSER="scott";publicstaticfinalStringDBPASS="tiger";%><%Connectionconn=null;PreparedStatementpstmt=null;ResultSetrs=null;booleanflag=false;%><%Stringuserid=request.getParameter("userid");//接收表单参数Stringpassword=request.getParameter("password");//接收表单参数try{Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);Stringsql="SELECTuserid,passwordFROMtuserWHEREid=?ANDpass=?";pstmt=conn.prepareStatement(sql);pstmt.setString(1,userid);pstmt.setString(2,password);rs=pstmt.executeQuery();if(rs.next()){//如果有内容,则此处执行,表示查询出来,合法用户flag=true;}}catch(Exceptione){}finally{try{conn.close();//连接一关闭,所有的操作都将关闭}catch(Exceptione){}}%><%if(flag){%><jsp:forwardpage="main.jsp"/><%}else{%><jsp:forwardpage="failure.jsp"/><%}%>
解决方案
解决方案二:
参数传递是否正确?还是逻辑是否有问题?自己先检查下
解决方案三:
兄弟吧错误发出来看看!
解决方案四:
跟踪下看有没有收到数据如有报错请发下错误堆栈信息看看
解决方案五:
没有错误,就是不管你输入的用户和密码是否正确回复的都是登陆失败!
解决方案六:
应该还要关闭ResultSet和PreparedStatement对象吧~http://kaqi.javaeye.com/blog/265173我是这样理解的,如果真是这样出错的话,上面数据库联接查询的代码就无效,所以下面的flag变量就没改变,还是原来的初始值.不知道对不对,有待证实~
解决方案七:
你为什么就不看看你所传过去的userid和password是否存在值吗??很明显你的这两个值是null,如果你是用eclipse开发的话,你用在Stringuserid=request.getParameter("userid");//接收表单参数Stringpassword=request.getParameter("password");//接收表单参数加上System.out.println(userid"+"password);看看在控制台上输出的是什么就知道了,你说无论是输入对的还是错的用户密码都没错都是登陆失败,你就应该想到了你的值很可能就没有传过去。不信你将你的正确的密码Stringuserid=“你的用户名”;//接收表单参数Stringpassword=“你的密码”;//接收表单参数输入正确的情况下,看看还是登录失败吗?其实我觉得你的问题不是出在程序上,而是你对request的不熟悉,你还是要去好好理解servlet的几大内置对象。在什么时候用request才对。还有处理错误的方法有很多,不会看堆栈里面的信息可以打印出来嘛。呵呵……加油啊。
解决方案八:
Stringsql="SELECTuserid,passwordFROMtuserWHEREid=?ANDpass=?";SQL语句有问题,大哥。你明知道你数据库中的列名是userid和password;但是你在where条件中却写的id和pass哈哈至于为啥没有报错,是因为你在}catch(Exceptione){}中没有关于异常的任何处理。
解决方案九:
在说一句,想看错误在try{}catch(Exceptione){e.printStackTrace();}
解决方案十:
SELECTuserid,passwordFROMtuserWHEREid=?ANDpass=?";这sql语句写的对不对呀怎么userid=id,password=pass吗?
解决方案十一:
对,他的这个程序有两个地方出错,一是数据查询语句,二是用户密码根本就没有穿送过去,在开发的过程中,一般都要先保留try{}catch(Exceptione){e.printStackTrace();}这部分内容,要不然你怎么去查找你的错误信息啊。
解决方案十二:
在说一句,想看错误在try{}catch(Exceptione){e.printStackTrace();}你是不数据库没有数据或者输入的用户名或密码错误啊
解决方案十三:
0.00结贴率还是不浪费时间了
解决方案十四:
楼上这位头脑不适合编程,别人0结帖率就让你想到他不喜欢结贴?你也看看人家的技术总分!还建议你别做if判断!哈哈