日期:2014-05-17  浏览次数:20639 次

servlet验证用户名,密码,总不能判断成功登陆,求大神指导!
import java.io.IOException;
import java.sql.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class LoginCl extends HttpServlet {

Connection ct=null;
PreparedStatement ps=null;
ResultSet rs=null;

public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletExceptionIOException {
response.setContentType("text/html;charset=gbk");
String u=request.getParameter("user");//接收表单提交的用户名
String p=(String)(request.getParameter("passwd"));//接收表单提交的密码
try {
//链接数据库
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;datebase=Login","sa","sa");
ps=ct.prepareStatement("select * from login where userId='"+u+"'");
rs=ps.executeQuery();

if(rs.next())
{
String dbPasswd=rs.getString("passwd");
System.out.println(dbPasswd);//打印数据库中的密码
System.out.println(p);//打印接收的密码
if(dbPasswd.equals(p)){
response.sendRedirect("Wel");
}else{
System.out.println("密码不正确!");
response.sendRedirect("Login");
}
}else{
System.out.println("用户名不存在!");
}

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
if (rs!=null) rs.close();
if (ps!=null) ps.close();
if (ct!=null) ct.close();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
public void init() throws ServletException {
// Put your code here

}

}

------解决方案--------------------
把你接收的密码和数据库密码去空格再比较试试,有可能你数据库的密码是char型?
------解决方案--------------------
同意6楼的做法
------解决方案--------------------
equals(XXX)。先看看这些密码是否包含空格吧。