日期:2014-05-18  浏览次数:20808 次

大侠来帮我看看程序,关于servlet的小程序
if判断用户名和密码的时候为什么每次都是执行response.sendRedirect("/WebDL/PasswordError.html"); 
这一句?这是密码错误的时候才执行的,是不是哪里写错了?小弟新手刚学j2ee求大侠指点
public class DLServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletExceptionIOException {
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String password1 = request.getParameter("password");

String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=JDBCTest";  
String user = "sa";
String password= "aaaaaa";
try {
Class.forName(driverName);
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM [USER] WHERE NAME =?";
PreparedStatement ps = conn.prepareStatement(sql);    
ps.setString(1, name);
//st.executeUpdate(sql1);
ResultSet rs =ps.executeQuery();
String doPasswd;
    if(rs.next()){
     doPasswd = rs.getString("passwd");
     if(doPasswd.equals(password1)){      
     response.sendRedirect("/WebDL/Welcome.html"); 
     }else{
     response.sendRedirect("/WebDL/PasswordError.html"); 
     }
    }else{
        response.sendRedirect("/WebDL/Error.html"); 
    }
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}

------解决方案--------------------
楼主断点过 
if(doPasswd.equals(password1)) 这一行是true or false了吗?两个密码值相等吗?
------解决方案--------------------
用list实现查询数据库信息并打印出来是可以的,或者写一个方法,返回结果并打印。但是我觉得你写的界面有问题,为什么不用jsp呢?再好好看看你的界面代码吧,还有数据库连接最好封装一下,不然重复代码太多,看着也乱