帮帮忙,看看我写的登陆的代码,为什么没有跳转到另外一个页面

hawaii_wx 2005-08-17 10:46:53
近来很是郁闷呀,刚学jsp不久,遇到很多问题,jsp里从不会连数据库,到用jsp:useBean连数据库,
唉,问题多了,牢骚不发了,下面是我写的代码,就是一个登陆的代码,是连接数据库,如果输入的用户名和密码在数据库中查询的到,就跳转到另一个页面,但是我输入的是数据库有的用户名,和密码,就是不给跳转,还请大家帮我看看到底是什么地方写错了!

一,连接数据库的useBean:

public class ConnectionDB
{
public Connection conn;
public Statement stmt;
public ResultSet rs=null;


public ConnectionDB()
{
this.connection();
//实例化该类时调用连接数据库的方法
}

public boolean connection()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/test";

conn=DriverManager.getConnection(url,"root","");
stmt=conn.createStatement();
}
catch(SQLException e)
{
System.out.println("数据库连接错误:"+ e.getMessage());
return false;
}
catch (ClassNotFoundException e)
{
System.out.println("数据库连接错误:"+ e.getMessage());
return false;
}
return true;
}
}

二,用户类的useBean

public class Login extends ConnectionDB
{
private String userName;
private String userPas;

public Login()
{
userName="";
userPas="";
}

public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPas() {
return userPas;
}
public void setUserPas(String userPas) {
this.userPas = userPas;
}
/**
* 此方法负责连接数据库,并查询用户是否是注册用户,即是否是user表里存在的用户
* 并且对密码进行验证
*/
public boolean executeQuery()
{
// ConnectionDB condb=new ConnectionDB();
super.connection();
try
{
String sql="select userName from user where userName ='"
+userName+"'and userPas='"+userPas+"'";

rs=stmt.executeQuery(sql);
//把查询得到的记录集用next方法进行验证,因为已经可以肯定最多只有一条记录所以不用while循环
if(rs.next())
{
return true;
}
}
catch (SQLException e)
{

System.out.println("Login.executeQuery()"+e.getMessage());
return false;
}
return false;

}

public void close()
{
if(conn!=null)
{
try
{
rs.close();
stmt.close();
conn.close();
}
catch (SQLException e)
{
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
}

三,登陆的jsp页面

<%@ page contentType="text/html;charset=gbk"%>
<%@ page language="java" import="java.util.*" %>
<%@ page session="true"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'Login.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">

<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>

欢迎你. <br>

<%!String message="";%>
<script language="javascript">
function checkform() {
if (document.form1.username.value=="" || document.form1.passwd.value==""){
alert("用户名或密码为空!");
return false;
}
return true;
}

</script>

<div align=center><B>用户登录</B> </div>
<br>
<% if (!message.equals("")){
out.println("<p>" + message + "</p>");}%>

<form name="form1" method="get" action="Login.jsp">
<table width="400" border="0" cellspacing="1" cellpadding="1" align="center">
<tr>
<td width="147" align="right">用户名:<br>
</td>
<td width="246" valign="top">
<input type="text" name="userName" size="16" maxlength="25">
</td>
</tr>
<tr>
<td width="147" align="right">密码:</td>
<td width="246" valign="top">
<input type="password" name="userPas" maxlength="20" size="16">
</td>
</tr>
<tr>
<td width="147" align="right"> </td>
<td width="246" valign="top">
<input type="submit" name="Submit" value="登录" onclick="javascript:return(checkform());">
<input type="reset" name="Submit2" value="取消">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<p> </p>
测试用户:aaa 密码:111
</td>
</tr>
<tr>

<td colspan="2" align="center">
<p> </p>
<p>如果你您没有注册,请在此<a href="Reg.jsp">注册</a></p>
</td>
</tr>
</table>
</form>
<jsp:useBean id="login" class="login.Login" scope="page"/>
<%

if(request.getParameter("userName")!=null && request.getParameter("userName").equals(""))
{
String userName=request.getParameter("userName");

String userPas=request.getParameter("userPas");

login.setUserName(userName);
login.setUserPas(userPas);
out.println(userName+"<<<>>>"+userPas);
login.executeQuery();
if(login.executeQuery())
{
session.setAttribute("userName",userName);

response.sendRedirect("index.jsp"); //这里明明写了跳转,但是就是不给跳,怀疑是没有进入到这个if里面来,但是我在这个工程里面写了一个简单的用useBean连接数据库的jsp页面,可以显示出数据库的数据,说明连接数据库是好的,到底是什么问题呢?
}
else
{
out.println(userName+"<<<>>>"+userPas);
out.println("用户名或密码不存在");
}
}
else
{
message="用户名或密码错误";

}

%>
</body>
</html>
...全文
265 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hawaii_wx 2005-08-17
  • 打赏
  • 举报
回复
唉,现在打算重新写,把原来的login。jsp里面的html代码分离出来,写成html页面,把jsp部分的代码分离出来写成jsp页面,然后html里面的表单提交到jsp页面,不知道这样写会不会让代码清晰些?
hawaii_wx 2005-08-17
  • 打赏
  • 举报
回复
to:jyy7751(wish i could fly) ( ) 信誉:100
你的建议我会采纳的,

to:layueer(爱伤怀,冲向五颗星) ( ) 信誉:98
如果放到index。jsp里面判断,那Login。jsp里面不是没有什么java代码了,写成html就可以了,是吧,这也是一种方法

to:TomyGuan(Tomy) ( ) 信誉:100
你的建议是最直接的抓住了问题的根本
本来我是想偷懒,不用变量写,然后直接用true和false返回的,结果用的myeclipse它直接设置了,
唉,现在用了一个局部布尔变量,最后返回这个变量,相信应该可以了
我去试试
wanchao2001 2005-08-17
  • 打赏
  • 举报
回复
感觉代码太乱,用servlet判断登录然后跳转页面
TomyGuan 2005-08-17
  • 打赏
  • 举报
回复
你的public boolean executeQuery()中不論如果都return false了。

去掉下面的return false;

public boolean executeQuery()
{
// ConnectionDB condb=new ConnectionDB();
super.connection();
try
{
String sql="select userName from user where userName ='"
+userName+"'and userPas='"+userPas+"'";

rs=stmt.executeQuery(sql);
//把查询得到的记录集用next方法进行验证,因为已经可以肯定最多只有一条记录所以不用while循环
if(rs.next())
{
return true;
}
}
catch (SQLException e)
{

System.out.println("Login.executeQuery()"+e.getMessage());
return false;
}
/////////////////////////return false;去掉這個

}

layueer 2005-08-17
  • 打赏
  • 举报
回复
<form name="form1" method="get" action="Login.jsp">
改成
<form name="form1" method="get" action="index.jsp">
把下面这些代码放到index.jsp里面判断。

<jsp:useBean id="login" class="login.Login" scope="page"/>
<%

if(request.getParameter("userName")!=null && request.getParameter("userName").equals(""))
{
String userName=request.getParameter("userName");

String userPas=request.getParameter("userPas");

login.setUserName(userName);
login.setUserPas(userPas);
out.println(userName+"<<<>>>"+userPas);
login.executeQuery();
if(login.executeQuery())
{
session.setAttribute("userName",userName);

response.sendRedirect("index.jsp"); //这里明明写了跳转,但是就是不给跳,怀疑是没有进入到这个if里面来,但是我在这个工程里面写了一个简单的用useBean连接数据库的jsp页面,可以显示出数据库的数据,说明连接数据库是好的,到底是什么问题呢?
}
else
{
out.println(userName+"<<<>>>"+userPas);
out.println("用户名或密码不存在");
}
}
else
{
message="用户名或密码错误";

}

jyy7751 2005-08-17
  • 打赏
  • 举报
回复
if(request.getParameter("userName")!=null || !request.getParameter("userName").equals("")||!request.getParameter("userName").equals("null"))

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧