servlet 用户登陆验证

来源:百度知道 编辑:UC知道 时间:2024/05/24 05:27:39
我写了三个类
第一个用户类:public class User {
private String username;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}

第二个功能类:
public class UserJudge{
public boolean doJudge(User user){
boolean state=false;
DBUtil dbutil = DBUtil.getInstance();//DButil是一个工具类,作用是提供Connection
Connection conn = dbutil.getConnection();
PreparedStatement ps=null;
ResultSet rs = null;
String sql="select name from user where name=? and password=?";
try{
ps=conn.prepareStatement(sql);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
rs=ps.executeQuery();
if(rs.next()

String sql="select name from user where name=? and password=?";
你这么写的话name和password的值能传进去吗?是不是需要改成
String sql="select name from user where name="+user.getUsername+" and password="+getPassword;
按你原来的写法是直接就是一个静态的string字符串
另外 你rs查询出来为null的话 也就是没值 所以第二个类中if(rs.next()) 判断没有下一个值 所以就不执行了 直接跳过

user.getUsername(),user.getPassword(),你打印出来看看是什么,注意空格,你这样打印:"==="+user.getUsername()+"===",这样就可以很清楚的看清空格,然后看看这个用户名和记录在数据库中有记录么,如果数据库有记录的话,rs不可能为空的

=======补充
如果你用的eclipse开发,那你先用debug模式调试一下,看是哪一步出了问题,如果不是eclipse你就System.out.println(111);像你这样又没报错,又不知道是哪一步出了问题,怎么调!

你最好catch(Exception e){} 里面打印出错误原因 好查错误 你可以先跟踪看看所有的东西(如参数.执行步骤)都是不是你要的 你可以看看conn是否为null

强制类型转换下看看
rs=(ResultSet) ps.executeQuery();

如果楼主实在解决不了...直接HI我...

帮你解决这个问题...

还是希望楼主早日成功!!!

select name from user where name=? and password=?
还是user的问题,唉。写成[user]就行了。
还有大家说得基本上你都要听啊,除了excuteQuery传参数的说法以外,都