出错信息:
org.apache.jasper.JasperException: An exception occurred processing JSP page /loginCheck.jsp at line 2724:         }
25:        ResultSet rs = stmt.executeQuery(sql); 
26:        int rowcount = 0;
27:         while(rs.next())
28:         {
29:          rowcount++;
30:          if(role.equals("student"))
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)数据库处理bean:
package dbc;import java.sql.*;
import java.io.*;
import java.util.*;public class DataBaseConnection {

  String DBDRIVER = "com.mysql.jdbc.Driver"; 
  String    DBURL = "jdbc:mysql://localhost:3306/search"; 
  String   DBUSER = "root";
  String    DBPWD = "7681239";
  private   Connection  conn=null;   
  private   Statement   stmt=null;   
  private   ResultSet     rs=null;  
  private   PreparedStatement pstmt = null;
     public void connection()
     {
  try
  {
  Class.forName(DBDRIVER);
  }
  catch(java.lang.ClassNotFoundException e)
  {  
  System.out.println("conn:"+e.getMessage());
  System.out.println(DBURL);
  }
     }
     
     public ResultSet executeQuery(String sql)
     {
      try
      {
      conn = DriverManager.getConnection(DBURL,DBUSER,DBPWD);
      stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
      rs   = stmt.executeQuery(sql);
      
      }
      catch(SQLException ex)
      {
      System.err.println("conn_executeQuery:"+ex.getMessage());
      }
      return rs;
     }
     public int executeUpdate(String sql)
     {
      int rscount = 0;
      try
      {
      conn = DriverManager.getConnection(DBURL,DBUSER,DBPWD);
      stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
      rscount = stmt.executeUpdate(sql);
      
      }
      catch(SQLException ex)
      {
      System.err.println("conn_executeUpdate:"+ex.getMessage());
      }
      return rscount;
     }
     public PreparedStatement PSexecuteUpdate(String sql) 
     {
      try
      {
      conn = DriverManager.getConnection(DBURL,DBUSER,DBPWD);
      pstmt = conn.prepareStatement(sql);
      
      }
      catch(SQLException ex)
      {
      System.err.println("conn_PSexecuteUpdate:"+ex.getMessage());
      }
      return pstmt;
     }
     public void close()
     {
      try
      {
      conn.close();
      }
      catch(Exception e)
      {
      }
      
     }
}
数据提交处理页
<%@ page language="java"  contentType="text/html;charset=gb2312" pageEncoding="gb2312"%>
<%@ page import="java.sql.*" %>
<jsp:useBean id="stmt" class="dbc.DataBaseConnection" scope="session"/>    
   <% 
        String role=request.getParameter("role");
        String uname=request.getParameter("uname");
        String password=request.getParameter("password");
        String sql = "";
        String id="",
               name="",
               dpassword="";   
        if(role.equals("student"))
       {
    sql = "select * from student where sname='"+uname+"'";
       }
       else if(role.equals("admin"))
       {
 sql = "select * from admin where adminname='"+uname+"'";
       }        else
       {
      sql = "select * from company where cname='"+uname+"'";
        }
       ResultSet rs = stmt.executeQuery(sql); 
       int rowcount = 0;
        while(rs.next())
        {
         rowcount++;
         if(role.equals("student"))
         {
          id  = rs.getString("id");
             name = rs.getString("sname");
         dpassword = rs.getString("password");
         }
         else if(role.equals("admin"))
         {
                id = rs.getString("adminid");
              name = rs.getString("adminname");
          dpassword = rs.getString("password");
         }
         else
         {
          id = rs.getString("cid");
          name = rs.getString("cname");
         dpassword = rs.getString("password");
         }
        }
        if((rowcount==1)&&(dpassword.equals(password)))
        {
         if(role.equals("student"))
         {
         session.setAttribute("id",id);
         session.setAttribute("name",name);
         session.setAttribute("password",password);
         session.setAttribute("role","student");
         response.sendRedirect("index.jsp");
         }
         else if(role.equals("admin"))
         {
         session.setAttribute("id",id);
         session.setAttribute("name",name);
         session.setAttribute("password",password);
         session.setAttribute("role","admin");
         response.sendRedirect("index.jsp");
         }
         else
         {
         session.setAttribute("id",id);
         session.setAttribute("name",name);
         session.setAttribute("password",password);
         session.setAttribute("role","company");
         response.sendRedirect("index.jsp");
         }
        }
        else
        {
         out.println("登陆失败!错误的用户名或密码,请重新<a href=\"index.jsp\">登陆</a>");
        }
             %>

解决方案 »

  1.   

    刚进csdn,不懂规矩忘了给分,还请各位帮下忙,暑假在学校做的一个web项目,刚刚开始学习。
      

  2.   


    DataBaseConnection 类的connection() 有问题吧
    Class.forName(DBDRIVER); 加载数据库驱动 应该放到构造函数里
    把connection() 改为:
    public  DataBaseConnection() {
    try {
    Class.forName(DBDRIVER);
    } catch (java.lang.ClassNotFoundException e) {
    System.out.println("conn:" + e.getMessage());
    System.out.println(DBURL);
    }
    }
      

  3.   

    给点建议!
    session.setAttribute("id",id); 
            session.setAttribute("name",name); 
            session.setAttribute("password",password); 
            session.setAttribute("role","student"); 
            response.sendRedirect("index.jsp"); 
        
    以上这些代码你可以将获取的id,name等先存入实体类中,然后再存入List中,转入jsp页面用foreach循环遍历就行了。
    如果照你用这么多session会占资源比较多。
    提供我写的数据库连接操作类吧,不知道对你有帮助没有!
    package common;
    import java.sql.*;
    import java.util.*;
    public class DBConnection {
    /**
     * 连接数据库的类
     * */


    public static final String DRIVER_CLASS ="com.microsoft.sqlserver.jdbc.SQLServerDriver";
    public static final String DATABASE_URL="jdbc:sqlserver://localhost:1433;databaseName=addressBook";
    private static final String DATABASE_Name="sa";
    private static final String DATABASE_PASSWORD="sa";



    protected Connection con=null;
    protected PreparedStatement pr=null;
    protected ResultSet rs=null;
    //建立数据库的连接
    public Connection getconnection(){


    try {
    Class.forName(DRIVER_CLASS);
    Connection con=DriverManager.getConnection(DATABASE_URL,DATABASE_Name,DATABASE_PASSWORD);
    return con;
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return null;
    }
             
    //关闭资源 public void CloseAll(){
    try {
    if(rs!=null){
    rs.close();
    }
    if(pr!=null){
    pr.close();
    }
    if(con!=null){
    con.close();
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
      

  4.   

    你的27行代码rs是不是有值 
    提两点建议 不要再页面里面做太多操作
    不要用太多session 
      

  5.   

    while(rs.hasNext()){}
      

  6.   

    调用 executeQuery前要先获得连接啊...package dbc; import java.sql.*; 
    import java.io.*; 
    import java.util.*; public class DataBaseConnection {   String DBDRIVER = "com.mysql.jdbc.Driver"; 
      String    DBURL = "jdbc:mysql://localhost:3306/search"; 
      String  DBUSER = "root"; 
      String    DBPWD = "7681239"; 
      private  Connection  conn=null;  
      private  Statement  stmt=null;  
      private  ResultSet    rs=null;  
      private  PreparedStatement pstmt = null; 
        public Connection connection() 
        { 
      try 
      { 
       Class.forName(DBDRIVER); 
      conn = DriverManager.getConnection(DBURL,DBUSER,DBPWD); 
      } 
      catch(java.lang.ClassNotFoundException e) 
      {  
      System.out.println("conn:"+e.getMessage()); 
      System.out.println(DBURL); 
      } 
       return conn;
        } 
        
        public ResultSet executeQuery(String sql) 
        { 
        try 
        { 
            conn = connection();
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
            rs  = stmt.executeQuery(sql); 
        
        } 
        catch(SQLException ex) 
        { 
        System.err.println("conn_executeQuery:"+ex.getMessage()); 
        } 
        return rs; 
        } 
        public int executeUpdate(String sql) 
        { 
        int rscount = 0; 
        try 
        { 
        conn = DriverManager.getConnection(DBURL,DBUSER,DBPWD); 
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
        rscount = stmt.executeUpdate(sql); 
        
        } 
        catch(SQLException ex) 
        { 
        System.err.println("conn_executeUpdate:"+ex.getMessage()); 
        } 
        return rscount; 
        } 
        public PreparedStatement PSexecuteUpdate(String sql) 
        { 
        try 
        { 
        conn = DriverManager.getConnection(DBURL,DBUSER,DBPWD); 
        pstmt = conn.prepareStatement(sql); 
        
        } 
        catch(SQLException ex) 
        { 
        System.err.println("conn_PSexecuteUpdate:"+ex.getMessage()); 
        } 
        return pstmt; 
        } 
        public void close() 
        { 
        try 
        { 
        conn.close(); 
        } 
        catch(Exception e) 
        { 
        } 
        
        } 
      

  7.   

    谢谢各位大侠的回复,我的问题已经解决了,不过比较奇怪的事情是,在每次重启tomcat后要先运行下一个测试数据库连接的文件后面才不会出现这样的问题,如果不先运行这个数据库连接测试文件的话还是会有如上问题。谁能讲讲呢
      

  8.   

    补充一下:如果不运行那个数据库连接测试文件的话就会显示如下信息,就是驱动没找到
    2009-8-1 11:44:51 org.apache.catalina.core.AprLifecycleListener init
    信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: F:\jdk\jdk\bin;F:\tomcat6\Tomcat 6.0\bin
    2009-8-1 11:44:51 org.apache.coyote.http11.Http11Protocol init
    信息: Initializing Coyote HTTP/1.1 on http-8080
    2009-8-1 11:44:51 org.apache.catalina.startup.Catalina load
    信息: Initialization processed in 671 ms
    2009-8-1 11:44:51 org.apache.catalina.core.StandardService start
    信息: Starting service Catalina
    2009-8-1 11:44:51 org.apache.catalina.core.StandardEngine start
    信息: Starting Servlet Engine: Apache Tomcat/6.0.10
    2009-8-1 11:44:53 org.apache.catalina.core.ApplicationContext log
    信息: ContextListener: contextInitialized()
    2009-8-1 11:44:53 org.apache.catalina.core.ApplicationContext log
    信息: SessionListener: contextInitialized()
    2009-8-1 11:44:57 org.apache.coyote.http11.Http11Protocol start
    信息: Starting Coyote HTTP/1.1 on http-8080
    2009-8-1 11:44:57 org.apache.jk.common.ChannelSocket init
    信息: JK: ajp13 listening on /0.0.0.0:8009
    2009-8-1 11:44:57 org.apache.jk.server.JkMain start
    信息: Jk running ID=0 time=0/47  config=null
    2009-8-1 11:44:57 org.apache.catalina.startup.Catalina start
    信息: Server startup in 6000 ms
    conn_executeQuery:No suitable driver
    2009-8-1 11:47:30 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet jsp threw exception
    org.apache.jasper.JasperException
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
    at java.lang.Thread.run(Thread.java:595)
      

  9.   

    答案就是2楼的,调试了一下解决了全部的连带错误,谢谢andytom和其他所有参与的朋友们,谢谢你们的帮助