标题:[求助]一个奇怪的跳转问题!
取消只看楼主
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
 问题点数:0 回复次数:9 
[求助]一个奇怪的跳转问题!

  我做了一个简单的登陆页面,在adlogin.jsp中接收输入的用户名和密码,存到Administer的javabean中,然后在switch.jsp 中验证,奇怪的是无论输入的密码是否正确,都跳转到/login/fail.jsp这个页面。

代码如下:

adlogin.jsp的代码:
<%@page contentType="text/html; charset=GBK" import="common.AdministerList" errorPage="error.jsp"%>
<html>
<head>
<title>adlogin</title>
</head>
<body bgcolor="#ffffff">
<form name="form1" method="post" action="/ECWeb/login/switch.jsp">
<!-- <form name="form1" method="post" action="/ECWeb/admiLoginAction.do">-->
<table align="center" bgcolor="ccffcc" border="0" cellspacing="20">
<tr>
<td>用户名:</td>
<td align="left">
<select name="admiName">
<option value="" selected>--选择管理员登陆名称--</option>
<%=AdministerList.getAdmiListHTML()%> </select>
</td>
</tr>
<tr>
<td width="100"> 密
&nbsp
码:
</td>
<td align="center" width="30">
<input name="admiPassword" type="password">
</td>
</tr>
<tr>
<td height="30" align="right">
<input type="submit" name="submit" value="确认" align="middle"/>
</td>
<td height="30" align="center">
<input type="reset" name="reset" value="清空" align="middle"/>
</td>
</tr>
</table>
</form>
</body>
</html>


switch.jsp 的代码:
<%@ page contentType="text/html; charset=GBK" errorPage="error.jsp" %>
<%@ page import="common.*"%>
<%@page import="java.sql.*"%>
<jsp:useBean id="administerBean" scope="page" class="common.Administer" />
<jsp:setProperty name="administerBean" property="*" />
<%
Connection conn = null;
try {
conn = DBConnection.getConnection();
String newName=administerBean.getAdmiName();
String newPassword=administerBean.getAdmiPassword();
String sql="select admiId from AdmiInfo where admiName=newName and admiPassword=newPassword";
Statement Stmt=conn.createStatement();
ResultSet rs = Stmt.executeQuery(sql);
if (rs.next()) { //密码正确
administerBean.setAdmiId(Long.parseLong(rs.getString("admiId")));
session.setAttribute("ses_administerBean", administerBean);
%>
<jsp:forward page="/login/adindex.jsp"></jsp:forward>
<%} else { //密码错误%>
<jsp:forward page="/login/fail.jsp"></jsp:forward>
<%
}} finally {
if (conn != null) conn.close();
}
%>


Administer的代码:
package common;

import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Administer
{
private long admiId;
private String admiPassword;
private String admiName;

public String getAdmiPassword()
{
return admiPassword;
}

public long getAdmiId()
{
return admiId;
}

public String getAdmiName()
{
return admiName;
}

public void setPassword(String admiPassword)
{
this.admiPassword = admiPassword;
}

public void setAdmiId(long admiId)
{
this.admiId = admiId;
}

public void setAdmiName(String admiName)
{
this.admiName = admiName;
}
}

请各位帮忙看看,谢谢了~~~

搜索更多相关主题的帖子: head blank 用户名 ffffff 
2007-05-16 16:02
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 

谢谢ls的解答,可惜错误依旧!
我把sql语句改成这样了:
 String sql="select admiId from AdmiInfo where admiName='"+newName+"' and admiPassword='"+newPassword+"'";
或是这样:
   String sql="select admiId from AdmiInfo where admiName="+newName+" and admiPassword="+newPassword;
都还是只能跳转到/login/fail.jsp这个页面。

PS:数据类型
 admiId:bigint
admiName:varchar
admiPassword:varchar
 数据库是sql2000


The future is ours to build!
2007-05-16 18:27
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 
以下是引用sxzxwxf22在2007-5-16 18:45:15的发言:
你的密码验证方式select admiId from AdmiInfo where admiName='"+newName+"' and admiPassword='"+newPassword+"'";是有BUG的

那想想问问,该怎么修改好呢??
我很奇怪的是没理由总是跳转到/login/fail.jsp 这个页面呀!!!

[此贴子已经被作者于2007-5-16 21:22:58编辑过]


The future is ours to build!
2007-05-16 21:22
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 
试了很多的方法,似乎是页面传递数据的问题,adlogin.jsp提交的数据在switch.jsp 中读不出来,调试中

The future is ours to build!
2007-05-17 11:08
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 
回ls:
 你是说这样取:
      String newName=request.getParameter("admiName");
那个bean为什么不可用呢?要用的话该怎么写才对呢?

[此贴子已经被作者于2007-5-17 11:54:47编辑过]


The future is ours to build!
2007-05-17 11:53
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 
谢谢指点

The future is ours to build!
2007-05-17 12:04
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 
 我把sql语句改成这样了:
   String newName=request.getParameter("admiName");
 String newPassword=request.getParameter("admiPassword");
String sql = "select admiId from AdmiInfo where admiName='" + newName + "' and admiPassword='" + newPassword + "'";

错误还是和原来一样,不能验证密码,直接就跳转到/login/fail.jsp这个页面
真的想不通

The future is ours to build!
2007-05-17 12:30
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 

有一个问题:
   <select name="admiName">
<option value="" selected>--选择管理员登陆名称--</option>
   <%=AdministerList.getAdmiListHTML()%> </select>
这个下拉菜单选出的数据不是用户名,而是对应用户名的用户编号

我用这几句语句测试的时候:
  String newName=request.getParameter("admiName");
String newPassword=request.getParameter("admiPassword");
  out.println(newName);
out.println(newPassword);

在adlogin.jsp的下拉菜单中选择用户名:xwt 密码:20030612
输出的是:3000002 20030612


PS:
AdmiInfo中的原始数据是:
   
 admiId admiName admiPassword
 3000000 lxj 20030621
3000001 sw 20030622
3000002 xwt 20030612





The future is ours to build!
2007-05-17 16:36
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 

不是显示的不正确
在adlogin.jsp中我选择用户名和输入相应密码提交后,在switch.jsp 中得到的是"与用户名对应的用户ID"和"相应的密码"
例如:
 选择用户名:xwt 输入密码:20030612  在adlogin.jsp中提交
 在switch.jsp 中,用下列语句验证提交的数据

  String newName=request.getParameter("admiName");
String newPassword=request.getParameter("admiPassword");
  out.println(newName);
out.println(newPassword);
得到的输出:3000002 20030612   3000002 在数据库中是xwt对应的ID号

没有得到用户名的信息,就没法验证登陆是否正确了



The future is ours to build!
2007-05-17 20:51
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
得分:0 
问题解决了,是这个方法"AdministerList.getAdmiListHTML"有一点问题!
谢谢各位一直以来的帮忙和指点!

The future is ours to build!
2007-05-22 21:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-139882-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.163218 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved