jsp通过数据库验证用户名和密码

xtzy89 2013-10-06 12:17:39
小弟初学JSP,在看韩顺平的用户登录管理系统时,跟着视频敲的代码,验证用户名和密码时通不过,求大神指导!有三个jsp,Login.jsp LoginCl.jsp wel.jsp.代码如下:

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让我重新输入呢?
...全文
5616 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
陶二先生 2014-11-21
  • 打赏
  • 举报
回复
我改成这样后也成功了,楼主明白为什么了没有?求解答
xtzy89 2013-10-10
  • 打赏
  • 举报
回复
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");
			}
我把代码修改成两个一起判断是可以的,不知道这种思路跟之前的有没有差别,先这样用吧。
xtzy89 2013-10-10
  • 打赏
  • 举报
回复
家里电脑好像不能引用楼上的话…… 回复16楼:打印格式会影响到最后的测试结果吗? 回复17楼:如果数据库没有脸上的话能跳到rs.next()吗?我看我这边好像跳进去了,这样可以确定数据库是正常的吗? 回复18楼:试了,还是一样的结果
soyestrellafortuna 2013-10-10
  • 打赏
  • 举报
回复
ResultSet rs=sm.executeQuery("select passwd from users where userName='" + u + "'");
C-J 2013-10-10
  • 打赏
  • 举报
回复
一步一步测试吧,先看页面取得到值没有?然后看看数据连接正确没有?
forgetsam 2013-10-10
  • 打赏
  • 举报
回复
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)+"-");
xtzy89 2013-10-10
  • 打赏
  • 举报
回复
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。牛人帮忙看看,问题出在哪,感激!
tony4geek 2013-10-10
  • 打赏
  • 举报
回复
if(rs.next()){ // 这个满足条件不 if(rs.getString(1).equals(p)){// 打印 看看 rs.getString(1) , p
xtzy89 2013-10-10
  • 打赏
  • 举报
回复
晕 还是不行。试了好多次了,都能打印出来 就是跳转不到wel.jsp中……
shpery 2013-10-08
  • 打赏
  • 举报
回复
然后把if(rs.next())的else删掉
心旷神逸 2013-10-08
  • 打赏
  • 举报
回复
ResultSet rs=sm.executeQuery("select passwd from users.dbo.users where userName='admin'");
shpery 2013-10-08
  • 打赏
  • 举报
回复
if(rs.next())改为while(rs.next())
xtzy89 2013-10-07
  • 打赏
  • 举报
回复
引用 4 楼 dong648629778 的回复:
	ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
你这里直接取userName='admin'了 上面的
String u=request.getParameter("username");
这个是用来干嘛的?
这个不是从html中读取你输入的用户名吗,然后跟你数据库中的比较,相同就跳转下一个界面,不相同就跳转到登陆界面。
xtzy89 2013-10-07
  • 打赏
  • 举报
回复
引用 6 楼 yy52113142011 的回复:
	ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
userName为什么用admin,你不应该用得到的用户名去查询嘛
	ResultSet rs=sm.executeQuery("select passwd from users where userName='u'");
应该这样吧
刚开始使用'u',后来发现运行起来跟预想结果不一样才改成admin的。admin在数据库中是存在的,想自己打印下看输出结果对不对。
xtzy89 2013-10-07
  • 打赏
  • 举报
回复
引用 5 楼 bill0605030109 的回复:
你把用户和密码out.print出来看看是不是对的,说不定是<input>里的name和request.getParameter里的不一样呢。
昨天也检查了,没看出名称有问题,通过用户名来检查密码就是过不了。最后只能是用户名和密码一起从数据库读。
尘缘udbwcso 2013-10-06
  • 打赏
  • 举报
回复
自己测试一下 1.取没取到页面输入的值 2.数据库能不能连接上 3.数据库连接上了的话查询出来的结果是否正确 这些都弄清楚了就应该知道问题出在哪了
qq_wwwhj 2013-10-06
  • 打赏
  • 举报
回复
	ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
userName为什么用admin,你不应该用得到的用户名去查询嘛
	ResultSet rs=sm.executeQuery("select passwd from users where userName='u'");
应该这样吧
  • 打赏
  • 举报
回复
你把用户和密码out.print出来看看是不是对的,说不定是<input>里的name和request.getParameter里的不一样呢。
dong648629778 2013-10-06
  • 打赏
  • 举报
回复
	ResultSet rs=sm.executeQuery("select passwd from users where userName='admin'");
你这里直接取userName='admin'了 上面的
String u=request.getParameter("username");
这个是用来干嘛的?
xtzy89 2013-10-06
  • 打赏
  • 举报
回复
1.取没取到值在myeclipse中打印出来怎么在后台看 2.数据库是可以连接上的 3.查询语句也是对的,在SQL中直接运行可以查询
加载更多回复(1)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧