数据表 CMUSER字段    名称
INT     ID
CHAR    username
char    password
char    pop
在VO类里生成get和set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}对VO进行验证
public boolean isLogin(UserVo pv)
{
boolean flag = false ;
// 在此处成具体的数据库验证

// 声明一个数据库操作对象
PreparedStatement pstmt = null ;
// 声明一个结果集对象
ResultSet rs = null ;
// 声明一个SQL变量,用于保存SQL语句
String sql = null ;
// DataBaseConnection为具体的数据库连接及关闭操作类
DataBaseConnection dbc = null ;
// 连接数据库
dbc = new DataBaseConnection() ;

// 编写SQL语句
sql = "SELECT username FROM CMUSER WHERE username=? and password=?" ;

try
{
// 实例化数据库操作对象
pstmt = dbc.getConnection().prepareStatement(sql) ; // 设置pstmt的内容,是按name和密码验证
pstmt.setString(1,pv.getUsername()) ;
pstmt.setString(2,pv.getPassword()) ;
System.out.println("+");   //如果连接成功 控制台输出Connection Successful!
// 查询记录
rs = pstmt.executeQuery() ;
// 判断是否有记录
if(rs.next())
{
// 如果有记录,则执行此段代码
// 用户是合法的,可以登陆
flag = true ;
pv.setUsername(rs.getString(1)) ;
}
// 依次关闭
rs.close() ;
pstmt.close() ;
}
catch(Exception e)
{
System.out.println(e) ;
}
finally
{
// 最后一定要保证数据库已被关闭
dbc.close() ;
}
return flag ;
还有就是这是FORM和action文件

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 ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
String username = loginForm.getUsername() ;
String password = loginForm.getPassword() ;
UserVo per =  new UserVo() ;
per.getUsername() ;
per.getPassword() ;
if (DAOFactory.getUserDAOInstance().isLogin(per))
{
request.setAttribute("username", per) ;
}
else
{
ActionMessages errors = new ActionMessages() ;
errors.add("errors", new ActionMessage("errors.login")) ;
super.saveErrors(request, errors) ;
return mapping.getInputForward() ;
}
return mapping.findForward("suc");
}
这是参照别人写的代码,只是贴上去了简单的介绍,反正一运行就报错,我找不出原因,所以请大伙帮我看看!

解决方案 »

  1.   

    看了一下觉得有几个错误 lz 看一下咯
    1.  vo类中没有对数据库字段pop进行定义 (这个可能没有问题)
    2.  pstmt.setString(1,pv.getUsername()) 不记得是从零开始还是从已开始了 但pv.setUsername(rs.getString(1)) ;应该是从零开始的
    3. String username = loginForm.getUsername() ;
            String password = loginForm.getPassword() ;
            UserVo per =  new UserVo() ;
            per.getUsername() ;
            per.getPassword() ;
    在这段代码中 per中的username password 属性没有被赋值  个人理解 应该是
             per.setUsername(username);
            per.setPassword(password);