jsp和java怎么实现注册用户登录?要求注册到数据库的用户才能登录。

以下是我写的servlet代码,但是为什么只有数据库中最上面的第一个用户才能登录成功?求各位高手帮忙看看!publicvoiddoPost(HttpServletRequ... 以下是我写的servlet代码,但是为什么只有数据库中最上面的第一个用户才能登录成功?求各位高手帮忙看看!

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String username1 = request.getParameter("username") ;//获取jsp界面用户名
String psw = request.getParameter("password") ;//获取jsp界面密码

//登记JDBC驱动程序
try{
Class.forName("oracle.jdbc.driver.OracleDriver") ;
}catch(ClassNotFoundException e){
e.printStackTrace() ;
System.out.println("Class Not Found Exception . ") ;
}
//连接URL
String url ="jdbc:oracle:thin:@localhost:1521:bank" ;
Connection conn = null ;
Statement stmt = null ;
ResultSet rs = null ;

try{
conn = DriverManager.getConnection(url, "system","123456") ;
stmt = conn.createStatement() ;

//SQL语句
String sql = "select * from BANK_USER " ;
rs = stmt.executeQuery(sql) ;//返回查询结果
}catch(SQLException e){
e.printStackTrace() ;
}
HttpSession session = request.getSession() ;
session.setAttribute("username", username1) ;
try{
//如果记录集非空,表明有匹配的用户名和密码,登陆成功
// 登录成功后将username设置为session变量的username
// 这样在后面就可以通过 session.getAttribute("username") 来获取用户名,
// 同时这样还可以作为用户登录与否的判断依据

if(rs.next()){ //遍历查询

String username = rs.getString("username");//取得数据库用户名
String password = rs.getString("password");//取得数据库密码

if(password.equals(psw)){ //输入密码和数据库匹配

session.setAttribute("message","登陆成功!欢迎你" + username);
response.sendRedirect("jsp/purchase/purchase.jsp");
}else {
System.out.println("password: fasle" );
response.sendRedirect("index.jsp");
request.setAttribute("mess","用户名或密码错误!");

}

} else {
System.out.println("rs.next():false");
response.sendRedirect("index.jsp");
}
}catch(Exception e){
e.printStackTrace();
}
}
展开
 我来答
科纳数码
2013-04-14 · TA获得超过1014个赞
知道答主
回答量:299
采纳率:50%
帮助的人:33.5万
展开全部
很明显你sql语句有问题
这样写 String sql = "select * from BANK_USER where username='"+username1+"' and password='"+psw+"'" ;
追问
sql语句也有问题?但是还有其他问题吧,就像我回复一楼的那种情况,是不是问题呢?
追答
不是 你sql语句有问题 你查询数据库里面有没有你登陆的用户名和密码你必须写进去
U盘启动23
2013-04-15 · TA获得超过177个赞
知道答主
回答量:515
采纳率:0%
帮助的人:173万
展开全部
if(rs.next()){ //遍历查询 改为 while(rs.next()){ .
追问

你说的有可能,但是现在无论我输如什么用户名,控制台都输出 true admin

好像没从jsp登录界面取出输入的用户名和数据库比较。直接默认admin了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
463634661
2013-04-14 · 超过16用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:35.8万
展开全部
  • 刚学的jsp吧 ,注册这入门的问题,代码还不是分层写的,看起来很乱啊....干嘛把表单中的username放到session中,应该先从数据库查出来,有这个数据之后,在把这个用户名放到session里,想要的我可以帮您写写,几分钟的事

更多追问追答
追问
你说的确实,session这我挺晕的。分层是因为还有其他功能呢,哎棘手啊,再有半个月该交了。
追答
select * from BANK_USER 你这条sql语句得出的数据库BANK_USER中所有的数据,你直接String password = rs.getString("password");//取得数据库密码----这条语句当然永远取得第一条数据了,就是你说的都是admin,其他的你都没有取出来当来只能admin可以登录而其他的没有效果了,思路有问题,你应该是 select * from BANK_USER  where username=?  进去查数据库表,然后从取得的数据组取出password数据,和表单中传来的密码进行匹配....ResultSet  rs取数据你还很蒙,按照你的思路,把if(rs.next() )  改为  while(rs.next())进行循环取数据,在匹配if(rs.next())这只是取第一条,因为只判断一次,所以永远只去取第一条数据后面的你都省略了.....多练练,i以后就熟悉了,基础要打好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
稻草人生活印记
2013-04-14 · 知道合伙人互联网行家
稻草人生活印记
知道合伙人互联网行家
采纳数:9024 获赞数:184275
毕业于软件技术专业,从事计算机应用科学与通信工程研究(学习)工作,百度资深行家。

向TA提问 私信TA
展开全部
只有附上你的数据库设计才可以帮你写代码,这很简单的。没什么难度的。
更多追问追答
追问
没有数据库设计。。。
追答
那你数据如何存储?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式