这个是 login.jsp<%@ page contentType="text/html;charset=GB2312" import="java.sql.*" language="java" %>
<%@ page import="bean.LinkBean" %>
<jsp:useBean id="Link" scope="page" class="bean.LinkBean"/>
<%
  if(request.getParameter("memberid")!=null&&request.getParameter("memberpwd")!=null)
  {
    Connection conn=Link.setConnection("login");
    ResultSet rs=Link.getQuery("SELECT * FORM member WHERE memberid='"+request.getParameter("memberid")+"' AND memberpwd='"+request.getParameter("menberpwd")+"'");
    if(rs.next())
    { 
      response.sendRedirect("accesspage.jsp");
      }
    else
    out.println("密码账号不符!");
    }
%>
<html>
<head>
<title>登陆!</title>
</head>
<body>
<form method="post">
<table border="0" width="898">
<tr>
<td width="890" align="left" colspan="2">
<b><font size="5">开始登陆!!!</font></b>
<hr>
</td>
</tr>
<tr>
<td width="75" align="center">
<p align="right">账号:</p>
</td>
<td width="809" align="center">
<p align="left">
<input type="text" name="memberid" size="20">
</td>
</tr>
<tr>
<td width="75" align="center">
<p align="right">密码:</p>
</td>
<td width="809" align="center">
<p align="left">
<input type="password" name="memberpwd" size="20">
<input type="submit" value="登陆" name="loginButton">
</td>
</tr>
</table>
</form>
</body>
</html>这个是JAVABEAN   LinkBean.javapackage bean;
import java.sql.*;
public class LinkBean
{
  private Connection conn=null;
  private ResultSet rs=null;
  private String dbs;
  
  public LinkBean()
  {
  }
  public Connection setConnection(String db)
  {
    dbs="jdbc:mysql://localhost:3306"+db;
    try
    {
      Class.forName("com.mysql.jdbc.Driver");
      conn=DriverManager.getConnection(dbs,"root","");
      }
      catch (Exception e)
      {
        System.out.println(e.toString());
        }
        return conn;
   }
   public ResultSet getQuery(String sqls)
  {
    try
    {
      Statement sta=conn.createStatement();
      rs=sta.executeQuery(sqls);
      }
      catch(Exception e)
      {
        System.out.println(e.toString());
        }
     return rs;
     }
    }大家帮我看看哪里出了问题,登陆页面能进去,但输入账号和密码,登陆后就出现错误了,它说错误为
  org.apache.jasper.JasperException: An exception occurred processing JSP page /login.jsp at line 96:   {
7:     Connection conn=Link.setConnection("login");
8:     ResultSet rs=Link.getQuery("SELECT * FORM member WHERE memberid='"+request.getParameter("memberid")+"' AND memberpwd='"+request.getParameter("menberpwd")+"'");
9:     if(rs.next())
10:     { 
11:       response.sendRedirect("accesspage.jsp");
12:       }
数据库已建立了,到底哪里出问题了,高手帮帮忙啊。。

解决方案 »

  1.   

     ResultSet rs=Link.getQuery("SELECT * FROM member WHERE memberid='"+request.getParameter("memberid")+"' AND memberpwd='"+request.getParameter("menberpwd")+"'");
      

  2.   

    public ResultSet getQuery(String sqls) 
      { 
        try 
        { 
          Statement sta=conn.createStatement(); 
          rs=sta.executeQuery(sqls); 
          } 
          catch(Exception e) 
          { 
            System.out.println(e.toString()); 
            } 
         return rs; 
         } 
        } 用下这个
    public ResultSet getQuery(String sqls) 
      { 
        try 
        { 
          PreparedStatement sta=conn.prepareStatement(sqls)
          rs=sta.executeQuery(); 
          } 
          catch(Exception e) 
          { 
            System.out.println(e.toString()); 
            } 
         return rs; 
         } 
        } 
      

  3.   

    我在这里
    if(rs.next()) 
        {  
          response.sendRedirect("accesspage.jsp"); 
          } 
        else 
        out.println("密码账号不符!"); 
    改为if(rs!=null&&rs.next()) 
        {  
          response.sendRedirect("accesspage.jsp"); 
          } 
        else 
        out.println("密码账号不符!"); 
    就不出错了,但我按照数据库里输入的账号密码登陆后,都是  打印密码帐号不符!是不是我的数据库没连接上啊?还是数据库对类型有要求?例如账号是要 varchar ,而密码是要其他特定类型的吗?或者根本就是我的语句有问题啊?
      

  4.   

    dbs="jdbc:mysql://localhost:3306"+db;应该是有问题的
    改为下面是以下:dbs="jdbc:mysql://localhost:3306/"+db;实验以下
      

  5.   

    1.请确认数据库可以正常连接,
      包括连接语句、驱动包是否放入等;
    2.看看你执行的sql语句是否有问题。
      

  6.   

    ResultSet rs=Link.getQuery("SELECT * FORM member WHERE memberid='"+request.getParameter("memberid")+"' AND memberpwd='"+request.getParameter("menberpwd")+"'"); 
    没有数据填充ResultSet,即没有值,
    建议使用
    ResultSet rs=Link.getQuery("SELECT count(*) FORM member WHERE memberid='"+request.getParameter("memberid")+"' AND memberpwd='"+request.getParameter("menberpwd")+"'"); 
    判断大于0即可
      

  7.   


    回lz的朋友,我改为如下ResultSet rs=Link.getQuery("SELECT count(*) FROM member WHERE id='"+request.getParameter("memberid")+"'AND pwd='"+request.getParameter("memberpwd")+"'");
        if(rs!=null&&rs.next())
        { 
          response.sendRedirect("accesspage.jsp");
          }
        else
        out.println("密码账号不符!");但输入账号和密码后,无论密码错误与否都转到  accesspage.jsp (这个页面显示 “登陆成功”)。
    所以我猜想,数据库已经连接成功,但由于某些语句造成只确认了数据库的账号,却没能确认密码。
    到底还有什么问题啊?小弟周围没有人指点,就这点问题却搞了很久,求各位再帮我仔细看看啊!!!
      

  8.   

    Connection conn=Link.setConnection("login"); 
    这样也能连接上吗?
    应该是Connection conn=Link.setConnection("/login"); 吧1.按理说应该是根本没连接上数据库,所以setConnection(String db)方法返回null,getQuery(String sqls)也返回null,所以报错。
    2.改为if(rs!=null&&rs.next())后,rs!=null条件不满足,直接执行else语句,所以总是提示帐户密码不符。
    3.但是怎么会改为:
    ResultSet rs=Link.getQuery("SELECT count(*) FROM member WHERE id='"+request.getParameter("memberid")+"'AND pwd='"+request.getParameter("memberpwd")+"'"); 
    if(rs!=null&&rs.next())后却总转入登陆成功页面就奇怪了。
    你确定只做了这个改动吗?"login"前面是不是已经加上"/"了?楼主可以看看tomcat的记录,看看System.out.println(e.toString());有没有执行。  
      

  9.   

    <td width="75" align="center"> 
    <p align="right">密码: </p> 
    </td> 
    <td width="809" align="center"> 
    <p align="left"> 
    <input type="password" name="memberpwd" size="20"> 
    <input type="submit" value="登陆" name="loginButton"> 
    </td> 
    </tr> 
    </table> 
    </form> 
    </body> 
    </html> 
      

  10.   

    贴一段普通的检查用户是否登录的代码:
      public boolean checkUserLogin(userBean ub) 
        {        boolean result = false;
            try 
            {
                String sql =
                        "select count(*) from person where username=? and userpassword=?";
                prepar = conn.prepareStatement(sql);
                prepar.setString(1, ub.getUsername());
                prepar.setString(2, ub.getUserpassword());
                res = prepar.executeQuery();
                if (res.next()) 
                {
                    if (res.getInt(1) > 0) 
                    {
                        result = true;
                    }
                }
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
            return result;
        }
      

  11.   

    1.可能你数据库里的数据有问题
    2.通过前台获取的参数查询数据库的时候出错,查一下你动态生成的sql语句.看是否有问题