当前位置: 代码迷 >> Java Web开发 >> [求助]使用jsp处理登录数据失败
  详细解决方案

[求助]使用jsp处理登录数据失败

热度:67   发布时间:2007-08-14 16:06:49.0
[求助]使用jsp处理登录数据失败

我写了两个JAVABEAN,一个专门用于数据库的操作(DB.java),一个专门用于处理用户登录数据(Login.java),在Login.java中调用了DB.java中的方法。
我仔细检查过代码,我写的bean也都用main函数测试过,结果都正确,但是,运行jsp页面的时候,我输入数据库中正确的数据,但是最后总是转到登录失败的页面(fail.jsp)。
我肯定是jsp代码的问题;我的代码如下:
<%@ page contentType="text/html;charset=GBK"%>
<!-- login.jsp -->
<%@ page import="java.sql.*,vcsql.*" %>

<jsp:useBean id="login" scope="session" class="vcsql.bean.Login"/>

<%
String num = request.getParameter("userID");
String pass = request.getParameter("userpasswd");

num = new String(num.getBytes("GBK"));
pass = new String(pass.getBytes("GBK"));

session.setAttribute("stunum",num);
session.setAttribute("stupass",pass);

//checkLogin()返回true表示有该用户存在
boolean flag = login.checkLogin(num.trim(),pass.trim());

if(flag)
{
response.sendRedirect("wel.jsp");
}
else
{
response.sendRedirect("fail.jsp");
}
%>
请大家帮我看看这段代码有什么问题啊?

搜索更多相关主题的帖子: jsp  数据  失败  登录  

----------------解决方案--------------------------------------------------------
是不是跟.trim()有关,你先把它去掉试试.
----------------解决方案--------------------------------------------------------
这个没有关系的,我试过了,还是一样的结果。
----------------解决方案--------------------------------------------------------
请问会不会可能是根编码类型有关呢?
我在定义数据库的时候,用的都是gbk。
----------------解决方案--------------------------------------------------------
确认没有乱码..打出来看下..??

----------------解决方案--------------------------------------------------------
如果按你说的检索数据flag的确为true那就在response.sendRedirect("wel.jsp");下面加上return;
应该把你得到的flag输出到页面看下到底是哪的错误
----------------解决方案--------------------------------------------------------

我用以下语句来查看flag的值:
[CODE]boolean flag = log.checkLogin(num, pass);
String str = Boolean.toString(flag);
session.setAttribute("bb",str);[/CODE]
显示的值总是false;
这样也就是说我写的函数checkLogin在这个jsp中的返回值就是false?
可是,我在用main函数测试时,它是可以返回true的。就是这里不始终弄不明白为什么会这样呢?
这里是我改过后的程序:



----------------解决方案--------------------------------------------------------
boolean flag = false;
strsql = "select * from student where stu_num='";
strsql += num+"' and stu_password="+"'"+passwd+"'";
//1
try
{
ResultSet rs = database.executeQuery(strsql);
//2
if (rs.next())
{
flag = true;
}
else
{
flag = false;
}
database.closeAll();
}
catch (Exception e)
{
//3
e.printStackTrace();
}
return flag;

我写序号的地方都加System.out.Prinln();测试一下输出 如果用的eclipse可以断点调试看程序执行到哪 不就知道 错误原了吗? 我看肯定是你的数据库没连好
----------------解决方案--------------------------------------------------------
数据库连接是没有问题的。
因为我在Login.java中加上main()后能够正确输出数据里面的数据,也能返回正确的函数值。
我用的JCreater.
----------------解决方案--------------------------------------------------------
  相关解决方案