关于登陆页面的验证和重新定向response.sendRedirect();问题
我现在的登陆页面(login.jsp),按这一本书上的写,但是它就是不行。我的意图是让用户在登陆时判断其在数据库中已定义好的级别:A、B、C。分别被重新定向到不同级别对应的页面。那么但是它每次还是只回到login.jsp,就不再动了,而不重新定向到正确页。为什么?书上的原文只有判断用户名密码是否正确然后执行后面的操作。我嫁了个级别验证。但即使不加级别验证,他也不能重新定向呀。为什么?
下面是代码:
<form name="tmForm">
<input type="Text" name="tmText" size="40">
</form>
<p>
<%
String getmessage = (String) session.getAttribute("error");
if (getmessage==null) {getmessage="";}
%>
<p><font color="red"><%=getmessage%></font></p1></p>
<p align="center" class="style1"><font size="+4" face="华文行楷">考勤管理系统</font></p>
<form name="login" method="post" action="login.jsp" >
<p>
<div align="center">
<table width="47%" height="232" border=1 align="center" >
<tr >
<td height="44" colspan="2">
<div align="center"><font color="#FFFFFF" size="+2" face="华文行楷">请你输入</font></div></td>
</tr>
<tr >
<td width="27%"><div align="center"><strong><font color="#FFFFFF">用户名:</font></strong></div></td>
<td width="73%"><input name="opName" type="text" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="center"><strong> <font color="#FFFFFF">密码:</font></strong></div></td>
<td><input name="opPassword" type="password" size="20" maxlength="20"></td>
</tr>
<tr >
<td colspan="2"><div align="center">
<input type="submit" name="Submit" value="登陆">
</div></td>
</tr>
</table>
<table>
</table>
</div>
</form>
<%
String opName=request.getParameter("opName");
if (opName==null)
{opName="";
}
String opPassword=request.getParameter("opPassword");
if (opPassword==null)
{opPassword="";
}
byte a[]=opName.getBytes("ISO-8859-1");
opName=new String(a);
Connection con=null;
Statement sql=null;
ResultSet rs=null;
try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
}
catch(ClassNotFoundException e){}
try{con=DriverManager.getConnection("jdbc:microsoft:sqlserver://VIVI:1433;DatabaseName=qingyangRoad","sa","");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String condition="SELECT * FROM operater WHERE opName = "+"'"+opName+"'";
String auth="SELECT opAuthID FROM operater WHERE opName = "+"'"+opName+"'";
String A="A";
String B="B";
String C="C";
rs=sql.executeQuery(condition);
rs=sql.executeQuery(auth);
while(rs.next())
{String i=rs.getString("opName");
String p=rs.getString("opPassword");
//String a=rs.getString("opAuthID");
if(opName.equals(i)&&opPassword.equals(p)&&auth.equals("A"))
{//将帐号密码存入session对象,以备在输入界面中使用。
session.setAttribute("opName",opName);
session.setAttribute("opPassword",opPassword);
//为了防止客户浏览器限制Cookie的使用,需对连接进行重定向处理。
String s1=response.encodeRedirectURL("a.jsp");
//连接到管理员页面。
response.sendRedirect(s1);
}
if(opName.equals(i)&&opPassword.equals(p)&&auth.equals("B"))
{//将帐号密码存入session对象,以备在输入界面中使用。
session.setAttribute("opName",opName);
session.setAttribute("opPassword",opPassword);
//为了防止客户浏览器限制Cookie的使用,需对连接进行重定向处理。
String s1=response.encodeRedirectURL("b.jsp");
//连接到管理员页面。
response.sendRedirect(s1);
}
if(opName.equals(i)&&opPassword.equals(p)&&auth.equals("C"))
{//将帐号密码存入session对象,以备在输入界面中使用。
session.setAttribute("opName",opName);
session.setAttribute("opPassword",opPassword);
//为了防止客户浏览器限制Cookie的使用,需对连接进行重定向处理。
String s1=response.encodeRedirectURL("c.jsp");
//连接到管理员页面。
response.sendRedirect(s1);
}
}
if(!(session.isNew()))
{out.print("<BR>您的帐号或密码不正确");
}
}
catch(SQLException e1){}
%>
问题点数:0、回复次数:9Top
1 楼liuxiawei1(vivi)回复于 2005-06-01 15:05:57 得分 0
请问有没有人能拉我一把呀?Top
2 楼liuxiawei1(vivi)回复于 2005-06-01 15:38:16 得分 0
救命呀Top
3 楼life8love(非你不可)回复于 2005-06-01 15:46:59 得分 0
如果用户登陆成功,从用户属性中得到用户级别,根据级别打开不同页面。window.open();
Top
4 楼liwenchao()回复于 2005-06-01 16:03:32 得分 0
rs=sql.executeQuery(condition);
rs=sql.executeQuery(auth);
while(rs.next())
{
String i=rs.getString("opName");
String p=rs.getString("opPassword");
String a=rs.getString("opAuthID");
.........
}
上面的第二个rs的赋值语句有问题,应该是本页面没有编译过去,你可以重新定义一个变量,比如:
ResultSet rs2=sql.executeQuery(auth);
Top
5 楼dmy22271(阿呆)回复于 2005-06-01 16:54:19 得分 0
你验证时就好把他们放在session里Top
6 楼liuxiawei1(vivi)回复于 2005-06-01 18:26:35 得分 0
啊?Top
7 楼wddodo(wd)回复于 2005-06-01 18:53:22 得分 0
楼主应该打印一下你提交的用户名、密码以及从数据库中获取的记录,相信可以找到问题Top
8 楼XIHSHI(西红柿)回复于 2005-06-01 19:06:31 得分 0
应该验证一把,在session里放置个东西就可以了,hohoTop
9 楼liuxiawei1(vivi)回复于 2005-06-01 21:03:19 得分 0
怎么没人理了,是不是沉底了?顶一下Top




