当前位置: 技术问答>java相关
请教一个用户登录的问题,谢谢!
来源: 互联网 发布时间:2015-01-30
本文导语: 我做了一个用户登录程序,应用了数据连接池BEAN,数据库为SQL 2000,里面有一个表——idpassword,存放着 userid 和password;有一个login.html页面,用户输入ID 和PASSWORD,将数据传递给ValidateUser.jsp,这个页面调 用LoginManager.class这个...
我做了一个用户登录程序,应用了数据连接池BEAN,数据库为SQL 2000,里面有一个表——idpassword,存放着
userid 和password;有一个login.html页面,用户输入ID 和PASSWORD,将数据传递给ValidateUser.jsp,这个页面调
用LoginManager.class这个BEAN,如果ID 和PASSWORD正确,则转向一个页面,这个页面显示“GOOD”,不正确
,则转向另一个页面,显示“BAD”。应该说程序很简单,但是每次我都得到“BAD”,可是我输入的明明正确啊!
请大家帮忙找找原因,小弟倾囊相赠!!
————————ValidateUser.jsp————————————
————————LoginManager.java————————————
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import ConnectionPool;//这是一个数据连接池bean,网上可以找到
import UserCredentials;
public class LoginManager {
private ConnectionPool connectionPool;
private static final String SELECT_PASSWORD =
"SELECT password FROM idpassword WHERE userid = ";
private static final String QUOTE = "'";//代表‘符号
private class LoginProfile extends UserCredentials {
boolean isLoggedIn=false;
public LoginProfile(UserCredentials credentials) {
setUser( credentials.getUser());
setPassword( credentials.getPassword());
isLoggedIn = false;
}
}
public LoginManager() throws Exception {
connectionPool = new ConnectionPool();
connectionPool.initialize();
}
public boolean login(UserCredentials credentials)
throws SQLException {
LoginProfile profile = new LoginProfile(credentials);
Connection conn = connectionPool.getConnection();
Statement qs = conn.createStatement();
ResultSet rs =
qs.executeQuery(SELECT_PASSWORD + QUOTE +
credentials.getUser() + QUOTE);
while (rs.next()) {
if (rs.getString("password").equals(credentials.getPassword())) {
profile.isLoggedIn = true;
break;
}
}
return profile.isLoggedIn;
}
}
————————UserCredentials.java————————————
public class UserCredentials {
private String user;
private String password;
public UserCredentials( ) {
user = "";
password = "";
}
public String getUser( ) {
return user;
}
public void setUser( String user ) {
this.user = user;
}
public String getPassword( ) {
return password;
}
public void setPassword( String password ) {
this.password = password;
}
}
————————数据库连接池bean用到的CFG文件————————————
#ConnectionPool.cfg
JDBCDriver=sun.jdbc.odbc.JdbcOdbcDriver
JDBCConnectionURL=jdbc:odbc:login
ConnectionPoolSize=5
ConnectionPoolMax=100
ConnectionUseCount=5
ConnectionTimeout = 2
User=administrator
Password=12345
|
如果你的password使用的是char类型,那么如果password的长度部做字段长度,会自动在后面以空格补足,所以就不可能相等了。要么在得到输入的password之后在后面加空格补足相应的长度,要么使用nvarchar类型。