我做了一个简单的登陆页面,在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"> 密
 
码:
</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;
}
}
请各位帮忙看看,谢谢了~~~
----------------解决方案--------------------------------------------------------
String sql="select admiId from AdmiInfo where admiName="+newName+" and admiPassword=+"newPassword;
改成这样,然后看你的数据类型看要不要加上‘ 号.
----------------解决方案--------------------------------------------------------
谢谢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
----------------解决方案--------------------------------------------------------
你的密码验证方式select admiId from AdmiInfo where admiName='"+newName+"' and admiPassword='"+newPassword+"'";是有BUG的
----------------解决方案--------------------------------------------------------
你的密码验证方式select admiId from AdmiInfo where admiName='"+newName+"' and admiPassword='"+newPassword+"'";是有BUG的
那想想问问,该怎么修改好呢??
我很奇怪的是没理由总是跳转到/login/fail.jsp 这个页面呀!!!
[此贴子已经被作者于2007-5-16 21:22:58编辑过]
----------------解决方案--------------------------------------------------------
还是你的这个SQL语句有问题你先写个数据库中已存在的记录,看能否查到
你现在这一块只有可能是SQL语句有问题。
----------------解决方案--------------------------------------------------------
试了很多的方法,似乎是页面传递数据的问题,adlogin.jsp提交的数据在switch.jsp 中读不出来,调试中
----------------解决方案--------------------------------------------------------
String newName=administerBean.getAdmiName();
String newPassword=administerBean.getAdmiPassword();
不是这样取的,你应该用request来取而不是用你的javabean,你的JAVA在上一个页面没有存入且你的这个BEAN只是一个PAGE级的BEAN。
----------------解决方案--------------------------------------------------------
回ls:
你是说这样取:
String newName=request.getParameter("admiName");
那个bean为什么不可用呢?要用的话该怎么写才对呢?
[此贴子已经被作者于2007-5-17 11:54:47编辑过]
----------------解决方案--------------------------------------------------------
是的要用request取,如果你要用bean就要把bean设置成session级别的,这样你下一个页面才能拿到,而且你要在第一个页面中把bean的值赋上才可以
----------------解决方案--------------------------------------------------------