程序总进入失败的页面,我的MYSQL数据库名是student 表是information
<%@ page contentType="text/html;charset=gb2312"%>
<%-- 导入java.sql包,表示要使用数据库操作 --%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>登陆</title>
</head>
<body>
<center>
<h1>用户登录</h1>
<hr>
<br>
<br>
<%
   // 接收请求的内容
   String name = request.getParameter("uname") ;
   String password = request.getParameter("upassword") ;   // 定义变量,如果用户是合法用户,则将此标记变为true
   boolean flag = false ;
%>
<%
   // 定义数据库操作的常量、对象
   // 数据库驱动程序
   final String DBDRIVER = "com.mysql.jdbc.Driver" ;
   // 数据库连接地址
   final String DBURL   = "jdbc:mysql://localhost:3306/student" ;
   // 数据库用户名
   final String DBUSER   = "root" ;
   // 数据库连接密码
   final String DBPASSWORD = "123456" ;
   // 声明一个数据库连接对象
   Connection conn    = null ;
   // 声明一个数据库操作对象
   PreparedStatement pstmt = null ;
   // 声明一个结果集对象
   ResultSet rs    = null ;
   // 声明一个SQL变量,用于保存SQL语句
   String sql = null ;
%>
<%
   // 进行数据库操作
   try
   {
    // 编写SQL语句
    sql = "SELECT id FROM person WHERE name=? and password=?" ;
    // 加载驱动程序
    Class.forName(DBDRIVER) ;
    // 连接数据库
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
    // 实例化数据库操作对象
    pstmt = conn.prepareStatement(sql) ;
    // 设置pstmt的内容
    pstmt.setString(1,name) ;
    pstmt.setString(2,password) ;
    // 查询记录
    rs = pstmt.executeQuery() ;
    // 判断是否有记录
    if(rs.next())
    {
     // 如果有记录,则执行此段代码
     // 用户是合法的,可以登陆
     flag = true ;
    }
    // 依次关闭
    rs.close() ;
    pstmt.close() ;
    conn.close() ;
   }
   catch(Exception e)
   {}
%>
<%
   // 判断用户名及密码
   if(flag)  
   {
    // 合法用户
%>
    <jsp:forward page="login_success.jsp"/>
<%
   }
   else
   {
    // 非法用户
%>
    <jsp:forward page="login_failure.jsp"/>
<%
   }
%>
</center>
</body>
</html> 
问题补充:// 数据库连接地址
   final String DBURL   = "jdbc:mysql://localhost:3306/information" ;
这里我改啦
但我输入正确的用户名和密码,还是跳转到login_failure.jsp

解决方案 »

  1.   

    错误贴出来,大家能讨论下,
    看看是不是没有加上 myslq 的jar包?if(rs.next())// 把 if 改成while 试试。
      {
      // 如果有记录,则执行此段代码
      // 用户是合法的,可以登陆
      flag = true ;
      }
      

  2.   

    数据库名是student 表是informationsql = "SELECT id FROM person WHERE name=? and password=?" ;person?
      

  3.   

    我也觉得这个SQL语句有问题!但不知道该改成什么,我是菜鸟中的小鸟,第五天学习JSP,怎么打印rs?
      

  4.   

    你的用户名和密码的东西是保存在哪个表里面的?!是person表,还是information表?
      

  5.   

    我没有person这个表啊,用户名密码放在information这个表啦!
      

  6.   

    pstmt.setString(1,name) ;
      pstmt.setString(2,password) 
     这里改下看看  
    是不是数组型  
      

  7.   

    你没有person表 你的 那个查询语句要是能查看到  
    这种数据库估计还不存在
      

  8.   

    sql = "SELECT id FROM person WHERE name=? and password=?" ;
    这句错啦,应该是sql = "SELECT id FROM information WHERE name=? and password=?" ;
    改了之后还不可以!!还是跳到login_failure.jsp
      

  9.   


    那么你的sql语句就应该从information表里面去查。
      

  10.   

    sql = "SELECT id FROM person WHERE name=? and password=?" ;
    这句错啦,应该是sql = "SELECT id FROM information WHERE name=? and password=?" ;
    改了之后还不可以!!还是跳到login_failure.jsp
      

  11.   


    String name = request.getParameter("uname") ;
    String password = request.getParameter("upassword") ;
    System.out.println("name:"+name+"--password:"+password+"--看一下传过来的数值与存放在数据库表里面是否一致");把你的name,password后台打印出来看看,然后在你的通过sql语句执行一下看看是否能取到数据。
      

  12.   

    调试了一下,
    显示:
    class file editor
    source not found
    the source attachement does not contain the source for the file preparedstatement.class
    you can change the source attachment by clicking change attached source below
      

  13.   

    用查看RS中是否有数据,通常使用while循环,而不用if
      

  14.   

    还有的就是,你确定那个information表里面有你需要的数据吗?
      

  15.   

    18楼的问:是说在class文件中没找到preparedstatement.class,建议你重新加入链接数据库的包,确认 包是否完整。还有个问题, String name = request.getParameter("uname") ;如果你输入的是汉字的话就会出现乱码,这样你传入的数据也不对,最好转码,转码方法很多,可到百度上搜索。 另外:看你写代码,你应该是初学者吧?建议你在jsp页面最好不要写java代码,这是你以后工作编程的一个规范,页面跟java区分开。在你以后的学习中会慢慢改善的。
      

  16.   

    catch(Exception e){}
    改成
    catch(Exception e){
        e.printStackTrace(out);
    }
      

  17.   

    request.getParameter("uname") ; 打印出来看看 会不会出现乱码之类的
      

  18.   

    SELECT id FROM person WHERE name=? and password=?这里的id name password是关键字 不会出问题吗???  我记得我刚学sql的时候这些关键字 得用[]括起来,否则出错。
      

  19.   

    给你个思路 数据库的uname upassword 没有取到 1 你表是否弄错了 2 数据库的jar 包是否完整 
      

  20.   

    做个test类来测试sql语句,另:sql语句写在页面里很别扭的。。
      

  21.   

    这个问题我也遇到了
    页面一运行 只要访问数据库就调试状态了(确认没断点)
    并且是喊调试PreparedStatement.class如果不理会点击继续运行 也还是可以执行页面 但解析速度很慢