我用的JSP+DAO写的留言管理系统,现在在eclipse中这段代码可以通过
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
PersonVO person = new PersonVO() ;
person.setId("hdb") ;
person.setPassword("zzzzz") ;
System.out.println( DAOFactory.getPersonDAOInstance().login(person) );
System.out.println(person.getName()) ;
}
/*
输出:true hdblocal
*/
但是放到JSP页面中,能打印出person.getId(),person.getPassword();
但是DAOFactory.getPersonDAOInstance().login(person)这一句后台怎么也打印不了,用if进行判断,if和else条件都进不去...
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="org.lxh.factory.*"%>
<%@ page import="org.lxh.PersonDAO.PersonDAOImply.*"%><html>
<head>
<title>留言管理程序</title>
</head>
<body>
<center>
<h1>留言管理范例--JSP+DAO实现</h1>
<hr>
<br><br>

<jsp:useBean id="person" scope="page" class="org.lxh.person.PersonVO" />
<jsp:setProperty name="person" property="*" />
<%
try{
//person.setId("hdb") ;
//person.setPassword("zzzzz") ;
//验证
System.out.println("44444444444") ;
if(DAOFactory.getPersonDAOInstance().login(person) ){
//合法,设置用户名到session范围之中
System.out.println("222222") ;
session.setAttribute( "uname",person.getName() ) ;
%>
<jsp:forward page="login_success.jsp" />
<%
}else{
%>
<jsp:forward page="login.jsp" />
<%
}
}catch(Exception e){
System.out.println("33333333");
}
%>
</center>
</body>
</html>jspjava

解决方案 »

  1.   

    好的/*功能:
     * ·判断是否是正确的用户名和密码 
     * ·从数据库中取出真实的用户姓名
     */
    public boolean login(PersonVO person) throws Exception {
    boolean flag = false ;
    String sql = "select name from person where id=? and password=? " ;

    PreparedStatement pstmt = null ;
    DataBaseConnection dbc = null ;
    dbc = new DataBaseConnection() ;
    try{
    pstmt = dbc.getConnection().prepareStatement(sql) ;
    pstmt.setString(1,person.getId()) ;
    pstmt.setString(2,person.getPassword()) ;
    ResultSet rs = pstmt.executeQuery() ;

    if( rs.next() ){
    System.out.println("rs.next(()之后") ;
    flag = true ;
    person.setName( rs.getString(1) ) ;
    }
    rs.close() ;
    pstmt.close() ;
    }catch(Exception e){
    System.out.println(e.getMessage());
    throw new Exception("PersonDAOImpl操作出现错误") ;
    }finally{
    dbc.close() ;
    }

    return flag ;
    }
      

  2.   

    /*功能:
     * ·判断是否是正确的用户名和密码 
     * ·从数据库中取出真实的用户姓名
     */
    public boolean login(PersonVO person) throws Exception {
    boolean flag = false ;
    String sql = "select name from person where id=? and password=? " ;

    PreparedStatement pstmt = null ;
    DataBaseConnection dbc = null ;
    dbc = new DataBaseConnection() ;
    try{
    pstmt = dbc.getConnection().prepareStatement(sql) ;
    pstmt.setString(1,person.getId()) ;
    pstmt.setString(2,person.getPassword()) ;
    ResultSet rs = pstmt.executeQuery() ;

    if( rs.next() ){
    System.out.println("rs.next(()之后") ;
    flag = true ;
    person.setName( rs.getString(1) ) ;
    }
    rs.close() ;
    pstmt.close() ;
    }catch(Exception e){
    System.out.println(e.getMessage());
    throw new Exception("PersonDAOImpl操作出现错误") ;
    }finally{
    dbc.close() ;
    }

    return flag ;
    }
      

  3.   

    pstmt.setString(1,person.getId()) ;            
    pstmt.setString(2,person.getPassword()) ;            
    ResultSet rs = pstmt.executeQuery() ;
    debug你的person.getId()、person.getPassword()正确不
      

  4.   

    这个正确的,在eclipse里测试都是正常的,但是到JSP页面就不出状况咯..
      

  5.   

    debug  jsp页面调用login方法时的这两个参数也正确?
      

  6.   

    对的,两个参数在后台打印出来都是正确的,但就是进入不了if的判断里面去,一判断就结束了,并且抛出了login方法里面的异常...