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

JSP 用户登陆判断问题,望高手指点...
初学JSP,做个简单的登陆界面,但是实现不了
jsp页面的JAVA代码如下:
<%@   page   language= "java "   import= "java.sql.* "   pageEncoding= "GBK "%>
<jsp:useBean     id= "lll "   scope= "page "   class= "database.Link "     />
  <html>
    <head> </head>
    <%  
                  String   str1=request.getParameter( "username ");
                  String   str2=request.getParameter( "password ");
               
                  String   sql= "select   *   from   users   where   username= ' "+str1+ " '   and   password= ' "+str2+ " ' ";
  ResultSet   rs=lll.Query(sql);
  while(rs.next()){
                        String   s1=rs.getString(1);
  String   s2=rs.getString(2);
  String   s3=rs.getString(3);
  if(s1.equals(str1)&&s2.equals(str2)&&s3.equals( "0 "))
    response.sendRedirect( "manager.jsp ");
  else   if(s1.equals(str1)&&s2.equals(str2)&&s3.equals( "1 "))
      response.sendRedirect( "worker.jsp ");
  else   if(s1.equals(str1)&&s2.equals(str2)&&s3.equals( "2 "))
    response.sendRedirect( "reader.jsp ");
  else
        response.sendRedirect( "error.jsp ");
}  

                    %>

PS:s3是用户的权限判断,数据库可以连接上并可以读出数据,打开这个JSP页面后,输入正确的用户名和密码,却跳转到error.jsp,如果输入用户名或密码错误却不跳转,Link是一个JAVA类,在Query()方法里连接数据库,代码如下:
package   database;
import   java.sql.*;    

public   class   Link{
Connection   conn   =null;
String   username= "sa ";
String   password= " ";
ResultSet   rs=null;
String   sql;
public   ResultSet   Query(String   sql){
try   {  
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");  
conn   =   DriverManager.getConnection(   "jdbc:microsoft:sqlserver://localhost:1433;databasename=图书馆管理系统 ",   username,   password);
Statement   stmt=conn.createStatement();
rs=stmt.executeQuery(sql);


}catch(Exception   e)  
{
e.printStackTrace();  
}  
return   rs;

}

}
不知道哪里错了,就是跳转不到我要的页面,到底哪里错了,急死人了.....

------解决方案--------------------
class不就是叫link么?为什么你 useBean里写database.link也可以呢?奇怪
而且跳转到自己工程里的页面时尽量不要用response.sendRedirect()可用forward,你可以上网搜一下两者区别,我也刚学jsp出现过用response不对的问题
------解决方案--------------------
s3.equals( "0 ") 这个匹配应该有问题 你先s3=s3.trim()一下在比较

输入用户名和密码错误时 rs为null 根本就吧执行while里面的语句
------解决方案--------------------
如果你的用户名或者密码错误,则在jsp页面中,while条件判断为false,当然就不跳转。
如果你能从数据库中取出数据,那当用户名和密码正确时,在while循环中为何还要判断s1.equals(str1)&&