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)&&