LoginCl.jsp:
String u=request.getParameter("username");
String p=request.getParameter("passwd");
out.println(u);
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=users","sa","sa");
Statement sm=ct.createStatement();
//查询
ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
//根据结果作判断
if(rs.next()){
if(rs.getString(1).equals(p)){
response.sendRedirect("wel.jsp?user="+u);
}else{
response.sendRedirect("Login.jsp");
}
}else{
response.sendRedirect("Login.jsp");
}
wel.jsp:
<body>
登陆成功!恭喜恭喜<%=request.getParameter("user") %><br>
<a href="Login.jsp">重新登录</a>
</body>
数据库名为users,里面有userName为admin的用户,密码为admin,我在登录界面输入后怎么还是会跳转到Login.jsp让我重新输入呢?
21 个解决方案
#1
自己测试一下
1.取没取到页面输入的值
2.数据库能不能连接上
3.数据库连接上了的话查询出来的结果是否正确
这些都弄清楚了就应该知道问题出在哪了
1.取没取到页面输入的值
2.数据库能不能连接上
3.数据库连接上了的话查询出来的结果是否正确
这些都弄清楚了就应该知道问题出在哪了
#2
估计你判断那里错了。看看吧
#3
1.取没取到值在myeclipse中打印出来怎么在后台看
2.数据库是可以连接上的
3.查询语句也是对的,在SQL中直接运行可以查询
2.数据库是可以连接上的
3.查询语句也是对的,在SQL中直接运行可以查询
#4
ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
你这里直接取userName='admin'了
上面的
String u=request.getParameter("username");这个是用来干嘛的?
#5
你把用户和密码out.print出来看看是不是对的,说不定是<input>里的name和request.getParameter里的不一样呢。
#6
ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
userName为什么用admin,你不应该用得到的用户名去查询嘛
ResultSet rs=sm.executeQuery("select passwd from users where userName='u'");
应该这样吧
#7
昨天也检查了,没看出名称有问题,通过用户名来检查密码就是过不了。最后只能是用户名和密码一起从数据库读。
#8
刚开始使用'u',后来发现运行起来跟预想结果不一样才改成admin的。admin在数据库中是存在的,想自己打印下看输出结果对不对。
#9
这个不是从html中读取你输入的用户名吗,然后跟你数据库中的比较,相同就跳转下一个界面,不相同就跳转到登陆界面。
#10
if(rs.next())改为while(rs.next())
#11
ResultSet rs=sm.executeQuery("select passwd from users.dbo.users where userName='admin'");
#12
然后把if(rs.next())的else删掉
#13
晕 还是不行。试了好多次了,都能打印出来 就是跳转不到wel.jsp中……
#14
if(rs.next()){ // 这个满足条件不
if(rs.getString(1).equals(p)){// 打印 看看 rs.getString(1) , p
if(rs.getString(1).equals(p)){// 打印 看看 rs.getString(1) , p
#15
String p=request.getParameter("passwd");
System.out.println(p);
//打印出结果为admin
if(rs.next()){
System.out.println(rs.getString(1));
//打印出结果为admin
if(rs.getString(1).equals(p)){
//一定合法
System.out.println("haha");
response.sendRedirect("wel.jsp?user="+u);
}else{
//密码错误
System.out.println("xixi");
response.sendRedirect("login.jsp?errNo=1");
}
}else{
//密码错误
System.out.println("xixi");
response.sendRedirect("login.jsp?errNo=2");
}
按理说if(rs.getString(1).equals(p))应该成立,tomcat应该输出haha才对,可是输出结果却是xixi。牛人帮忙看看,问题出在哪,感激!
#16
String p=request.getParameter("passwd");
System.out.println(p);
//打印出结果为admin
改成 System.out.println("-"+p+"-");
if(rs.next()){
System.out.println(rs.getString(1));
//打印出结果为admin
改成 System.out.println("-"+rs.getString(1)+"-");
System.out.println(p);
//打印出结果为admin
改成 System.out.println("-"+p+"-");
if(rs.next()){
System.out.println(rs.getString(1));
//打印出结果为admin
改成 System.out.println("-"+rs.getString(1)+"-");
#17
一步一步测试吧,先看页面取得到值没有?然后看看数据连接正确没有?
#18
ResultSet rs=sm.executeQuery("select passwd from users where userName='" + u + "'");
#19
家里电脑好像不能引用楼上的话……
回复16楼:打印格式会影响到最后的测试结果吗?
回复17楼:如果数据库没有脸上的话能跳到rs.next()吗?我看我这边好像跳进去了,这样可以确定数据库是正常的吗?
回复18楼:试了,还是一样的结果
回复16楼:打印格式会影响到最后的测试结果吗?
回复17楼:如果数据库没有脸上的话能跳到rs.next()吗?我看我这边好像跳进去了,这样可以确定数据库是正常的吗?
回复18楼:试了,还是一样的结果

#20
ResultSet rs=sm.executeQuery("select * from users where userName='"+u+"'"+"and passwd='"+p+"'");
//System.out.println("passwd");
//根据结果做判断
if(rs.next()){
response.sendRedirect("wel.jsp?user="+u);
}else{
//密码错误
System.out.println("xixi");
response.sendRedirect("login.jsp?errNo=1");
}
我把代码修改成两个一起判断是可以的,不知道这种思路跟之前的有没有差别,先这样用吧。
#21
我改成这样后也成功了,楼主明白为什么了没有?求解答
#1
自己测试一下
1.取没取到页面输入的值
2.数据库能不能连接上
3.数据库连接上了的话查询出来的结果是否正确
这些都弄清楚了就应该知道问题出在哪了
1.取没取到页面输入的值
2.数据库能不能连接上
3.数据库连接上了的话查询出来的结果是否正确
这些都弄清楚了就应该知道问题出在哪了
#2
估计你判断那里错了。看看吧
#3
1.取没取到值在myeclipse中打印出来怎么在后台看
2.数据库是可以连接上的
3.查询语句也是对的,在SQL中直接运行可以查询
2.数据库是可以连接上的
3.查询语句也是对的,在SQL中直接运行可以查询
#4
ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
你这里直接取userName='admin'了
上面的
String u=request.getParameter("username");这个是用来干嘛的?
#5
你把用户和密码out.print出来看看是不是对的,说不定是<input>里的name和request.getParameter里的不一样呢。
#6
ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
userName为什么用admin,你不应该用得到的用户名去查询嘛
ResultSet rs=sm.executeQuery("select passwd from users where userName='u'");
应该这样吧
#7
昨天也检查了,没看出名称有问题,通过用户名来检查密码就是过不了。最后只能是用户名和密码一起从数据库读。
#8
刚开始使用'u',后来发现运行起来跟预想结果不一样才改成admin的。admin在数据库中是存在的,想自己打印下看输出结果对不对。
#9
这个不是从html中读取你输入的用户名吗,然后跟你数据库中的比较,相同就跳转下一个界面,不相同就跳转到登陆界面。
#10
if(rs.next())改为while(rs.next())
#11
ResultSet rs=sm.executeQuery("select passwd from users.dbo.users where userName='admin'");
#12
然后把if(rs.next())的else删掉
#13
晕 还是不行。试了好多次了,都能打印出来 就是跳转不到wel.jsp中……
#14
if(rs.next()){ // 这个满足条件不
if(rs.getString(1).equals(p)){// 打印 看看 rs.getString(1) , p
if(rs.getString(1).equals(p)){// 打印 看看 rs.getString(1) , p
#15
String p=request.getParameter("passwd");
System.out.println(p);
//打印出结果为admin
if(rs.next()){
System.out.println(rs.getString(1));
//打印出结果为admin
if(rs.getString(1).equals(p)){
//一定合法
System.out.println("haha");
response.sendRedirect("wel.jsp?user="+u);
}else{
//密码错误
System.out.println("xixi");
response.sendRedirect("login.jsp?errNo=1");
}
}else{
//密码错误
System.out.println("xixi");
response.sendRedirect("login.jsp?errNo=2");
}
按理说if(rs.getString(1).equals(p))应该成立,tomcat应该输出haha才对,可是输出结果却是xixi。牛人帮忙看看,问题出在哪,感激!
#16
String p=request.getParameter("passwd");
System.out.println(p);
//打印出结果为admin
改成 System.out.println("-"+p+"-");
if(rs.next()){
System.out.println(rs.getString(1));
//打印出结果为admin
改成 System.out.println("-"+rs.getString(1)+"-");
System.out.println(p);
//打印出结果为admin
改成 System.out.println("-"+p+"-");
if(rs.next()){
System.out.println(rs.getString(1));
//打印出结果为admin
改成 System.out.println("-"+rs.getString(1)+"-");
#17
一步一步测试吧,先看页面取得到值没有?然后看看数据连接正确没有?
#18
ResultSet rs=sm.executeQuery("select passwd from users where userName='" + u + "'");
#19
家里电脑好像不能引用楼上的话……
回复16楼:打印格式会影响到最后的测试结果吗?
回复17楼:如果数据库没有脸上的话能跳到rs.next()吗?我看我这边好像跳进去了,这样可以确定数据库是正常的吗?
回复18楼:试了,还是一样的结果
回复16楼:打印格式会影响到最后的测试结果吗?
回复17楼:如果数据库没有脸上的话能跳到rs.next()吗?我看我这边好像跳进去了,这样可以确定数据库是正常的吗?
回复18楼:试了,还是一样的结果

#20
ResultSet rs=sm.executeQuery("select * from users where userName='"+u+"'"+"and passwd='"+p+"'");
//System.out.println("passwd");
//根据结果做判断
if(rs.next()){
response.sendRedirect("wel.jsp?user="+u);
}else{
//密码错误
System.out.println("xixi");
response.sendRedirect("login.jsp?errNo=1");
}
我把代码修改成两个一起判断是可以的,不知道这种思路跟之前的有没有差别,先这样用吧。
#21
我改成这样后也成功了,楼主明白为什么了没有?求解答