求大神帮助小弟下,
开始定义了DaoVote类
package dao;
import java.sql.*;
import java.util.*;
import vo.Vote;
public class VoteDao {
    private Connection conn=null;
    public void initConnection() throws Exception{
     Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","mysqladmin");
    }
    public ArrayList<Vote> getAllVotes() throws Exception{
     ArrayList<Vote> al=new ArrayList<Vote>();
      
     initConnection();
     String sql="select teacherno,teachername,vote from t_vote";
     Statement stat=conn.createStatement();
     ResultSet rs=stat.executeQuery(sql);
     while(rs.next()){
     Vote vote=new Vote();
     vote.setTeacherno(rs.getString("teacherno"));
     vote.setTeachername(rs.getString("teachername"));
     vote.setVotenumber(rs.getInt("vote"));
     al.add(vote);
     }
     conn.close();
     return al;
    }
    public void updateVotes(String[] teacherno)throws Exception{
     initConnection();
     String sql="update t_vote set vote=vote+1 where teacherno=?";
     PreparedStatement ps=conn.prepareStatement(sql);
     for(int i=0;i<teacherno.length;i++){
     ps.setString(1,teacherno[i]);
     ps.executeUpdate();
     }
     conn.close();
    }
}
在JSP中使用
VoteDao vdao=new VoteDao();
                ArrayList<Vote> votes=vdao.getAllVotes();
                for(int i=0;i<votes.size();i++){
                    Vote vote=(Vote)votes.get(i);
总是出现错误,
org.apache.jasper.JasperException: An exception occurred processing JSP page /display.jsp at line 5148:                     //  String teachername = rs.getString("teachername");
49:                       //int vote = rs.getInt("vote");
50:                 VoteDao vdao=new VoteDao();
51:                 ArrayList<Vote> votes=vdao.getAllVotes();
52:                 for(int i=0;i<votes.size();i++){
53:                     Vote vote=(Vote)votes.get(i);
54:                 ArrayList  

解决方案 »

  1.   

    51行应该没有错误,而且这个异常应该也不是正常的异常。。
    有可能是jar包的问题
    刚才搜了一下,说把jar包放到lib目录下或许可以解决
      

  2.   

    下断点看能不能进getAllVotes 一步步来吧  太笼统了 不知
      

  3.   

    楼主呀把完整的异常贴出来, ArrayList<Vote> votes=vdao.getAllVotes();不知道楼主用的jdk是什么版本,1.5以下是不支持泛型的,
      

  4.   

    51行上面吧arraylist 初始化下
    ArrayList<Vote> votes=new ArrayList<Vote>();
      

  5.   

    这么明显的错误看不出来么, 你的成员变量private Connection conn=null;
    压根就没赋值
      

  6.   

    楼上肯定没细看代码
     initConnection();
    人家有实例化调用的方法好伐·
    请认真
      

  7.   

    先对你的dao写个测试类,测试一下吧,看的话问题很难找到,debug调试着一点点找问题吧
      

  8.   

    String sql="select teacherno,teachername,vote from t_vote";
    我怎么感觉是泛型的问题呢,Vote类成员变量只有这三个?实在不行就把泛型去掉吧,试试。
      

  9.   


        private Connection conn=null;
        public void initConnection() throws Exception{
         Class.forName("com.mysql.jdbc.Driver");
            Connection conn =   DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","mysqladmin");
            this.conn = conn; //加上这个
        }
      

  10.   

    这个是jsp最终编译后会变成servlet和html,这个51行的报错有可能是java servlet里面的51行。不代表jsp中的51行,请楼主贴下全的jsp代码。
    org.apache.jasper.JasperException: An exception occurred processing JSP page /display.jsp at line 51
      

  11.   

     他初始化的connection是个局部变量,把initConnection方法里面的Connection去掉直接就是conn =  DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","mysqladmin");
      

  12.   

    我把我写的几部分代码全部贴上来,大家帮忙看看,灰常感谢
    Vote.java:package vo;public class Vote {
        private String teacherno;
        private String teachername;
        private int votenumber;
        public String getTeacherno(){
         return teacherno;
        }
        public void setTeacherno(String teacherno){
         this.teacherno=teacherno;
        }
        public String getTeachername(){
         return teachername;
        }
        public void setTeachername(String teachername){
         this.teachername=teachername;
        }
        public int getVotenumber(){
         return votenumber;
        }
        public void setVotenumber(int votenumber){
         this.votenumber=votenumber;
        }
    }VoteDao.java:
    package dao;
    import java.sql.*;
    import java.util.*;
    import vo.Vote;
    public class VoteDao {
        private Connection conn=null;
        public void initConnection() throws Exception{
         Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","mysqladmin");
            this.conn=conn;
        }
        public ArrayList<Vote> getAllVotes() throws Exception{
         ArrayList<Vote> al=new ArrayList<Vote>();
          
         initConnection();
         String sql="select teacherno,teachername,vote from t_vote";
         Statement stat=conn.createStatement();
         ResultSet rs=stat.executeQuery(sql);
         while(rs.next()){
         Vote vote=new Vote();
         vote.setTeacherno(rs.getString("teacherno"));
         vote.setTeachername(rs.getString("teachername"));
         vote.setVotenumber(rs.getInt("vote"));
         al.add(vote);
         }
         conn.close();
         return al;
        }
        public void updateVotes(String[] teacherno)throws Exception{
         initConnection();
         String sql="update t_vote set vote=vote+1 where teacherno=?";
         PreparedStatement ps=conn.prepareStatement(sql);
         for(int i=0;i<teacherno.length;i++){
         ps.setString(1,teacherno[i]);
         ps.executeUpdate();
         }
         conn.close();
        }
    }vote.jsp:
    <%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%>
    <%@ page import="dao.VoteDao" %>
    <%
    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 'vote.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> 
        <% 
            String[] teacherno=request.getParameterValues("teacherno"); 
            //Class.forName(&quot;com.mysql.jdbc.Driver&quot;); 
            //Connection conn = DriverManager.getConnection(&quot;jdbc:mysql://localhost:3306/school&quot;,&quot;root&quot;,&quot;mysqladmin&quot;); 
            //String sql = &quot;update t_vote set vote=vote+1  where teacherno=?&quot;; 
            //PreparedStatement ps=conn.prepareStatement(sql); 
            //ps.setString(1,teacherno); 
            //ps.executeUpdate(); 
            //ps.close(); 
            //conn.close();         
            VoteDao vdao= new VoteDao();
            vdao.updateVotes(teacherno);
         %>
         <jsp:forward page="display.jsp"></jsp:forward>
      </body>
    </html>display.jsp:
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="dao.VoteDao" %>
    <%@ page import="vo.Vote" %>
    <%
    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 'display.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>
            <form action="vote.jsp" method="post">
            <table align="center">
            <caption> 欢迎给教师投票   <input type="submit" value="提交投票"> </caption>
            <tr bgcolor = "yellow">
                <td> 编号 </td>
                <td> 姓名 </td>
                <td> 得票数 </td>
                <td> 投票 </td>
            </tr>
            <%
                    //request.setCharacterEncoding("utf-8");
                    //response.setContentType("text/html;charset=utf-8");
                    //String Url=" jdbc:sqlserver://localhost:3306;DataBaseName=school;user=root&password=mysqladmin&useUnicode=true&characterEncoding=gb2312"; 
                    //Class.forName("com.mysql.jdbc.Driver");
                    //Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","mysqladmin");
                    //Statement stat = conn.createStatement();
                    //String sql = "select teacherno,teachername,vote from t_vote";
                    //ResultSet rs = stat.executeQuery(sql);
                    //while(rs.next()){
                      //    String teacherno = rs.getString("teacherno");
                        //  String teachername = rs.getString("teachername");
                          //int vote = rs.getInt("vote");
                    VoteDao vdao=new VoteDao();
                    //ArrayList<Vote> votes=new ArrayList<Vote>();
                    ArrayList<Vote> votes=vdao.getAllVotes();
                    for(int i=0;i<votes.size();i++){
                        Vote vote=(Vote)votes.get(i);
                    
             %>   
                    <tr bgcolor = "pink">
                    <td><%=  vote.getTeacherno()   %></td> 
                    <td><%=  vote.getTeachername() %></td>
                    <td><img  src="img/bar.jpg"  width="<%= vote.getVotenumber() %>" height="10"> <%=vote.getVotenumber() %></td>
                    <td><input name="teacherno" type="checkbox" value="<%= vote.getTeacherno() %>"></td>
                    </tr>
                <%       
                    }
                    //stat.close();
                    //conn.close();
                %>
          </table>
          </form>
      </body>
    </html>
    最后是出现的错误:
    HTTP Status 500 - An exception occurred processing JSP page /display.jsp at line 52type Exception reportmessage An exception occurred processing JSP page /display.jsp at line 52description The server encountered an internal error that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException: An exception occurred processing JSP page /display.jsp at line 5249:                       //int vote = rs.getInt("vote");
    50:                 VoteDao vdao=new VoteDao();
    51:                 //ArrayList<Vote> votes=new ArrayList<Vote>();
    52:                 ArrayList<Vote> votes=vdao.getAllVotes();
    53:                 for(int i=0;i<votes.size();i++){
    54:                     Vote vote=(Vote)votes.get(i);
    55:                 
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    root causejava.lang.NullPointerException
    dao.VoteDao.getAllVotes(VoteDao.java:16)
    org.apache.jsp.display_jsp._jspService(display_jsp.java:111)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 logs.Apache Tomcat/6.0.37        
       
      

  13.   

    空指针异常
    getAllVotes方法的16行Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","mysqladmin");
    这行代码修改成 
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","mysqladmin");
    应该没问题了
      

  14.   

    java.lang.NullPointerException
     dao.VoteDao.getAllVotes(VoteDao.java:16)
    很明显的空指针异常,你打个断点看一下,或者system.out看一下是个什么情况。。