首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

JSP分页:java.lang.NullPointerException,该怎么处理

2012-03-25 
JSP分页:java.lang.NullPointerException我做的是书上一

JSP分页:java.lang.NullPointerException
==============================================
我做的是书上一个JSP分页浏览,可是什么都写上了竟然出了个空指针错误
请高手帮忙看下

错误信息:
root   cause  

java.lang.NullPointerException
org.apache.jsp.display_jsp._jspService(display_jsp.java:237)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

==============================================
JSP分页浏览页面:

<%@   page   contentType= "text/html;charset=GB2312 "   %>
<%@   page   import= "java.sql.* "   %>
<%@   page   import= "user.showbypage "   %>
<%@   page   import= "java.io.* "   %>
<jsp:useBean   id= "handlePage "   class= "user.showbypage "   scope= "session "   >
</jsp:useBean>
<HTML>
<BODY   bgcolor=cyan> <font   size=9>
  <%!   //声明一个共享的连接对象:
    Connection   con=null;
        //显示数据库记录的方法:
        public   void   showList(ResultSet   rs,javax.servlet.jsp.JspWriter   out,int   n)
          {try
            {  
                out.print( " <table   border=1> ");
                  out.print( " <TR> ");
                        out.print( " <TH   width=50> "+ "客户登陆名 ");
                        out.print( " <TH   width=50> "+ "真实姓名 ");
                        out.print( " <TH   width=100> "+ "电子邮箱 ");
                        out.print( " <TH   width=100> "+ "联系电话 ");
                        out.print( " <TH   width=100> "+ "传真 ");
                        out.print( " <TH   width=100> "+ "通信地址 ");
                        out.print( " <TH   width=200> "+ "备注 ");
                  out.print( " </TR> ");
              for(int   i=1;i <=n;i++)
              {    
                out.print( " <TR> ");
                      String     username=rs.getString(1);  
                          out.print( " <TD> "+username+ " </TD> ");  


                      String     truename=rs.getString(2);  
                          out.print( " <TD> "+truename+ " </TD> ");
                      String     email=rs.getString(3);  
                          out.print( " <TD> "+email+ " </TD> ");  
                      String     phone=rs.getString(4);  
                          out.print( " <TD> "+phone+ " </TD> ");
                      String     fax=rs.getString(5);  
                          out.print( " <TD> "+fax+ " </TD> ");  
                      String     address=rs.getString(6);  
                          out.print( " <TD> "+address+ " </TD> ");
                      String     comment=rs.getString(7);  
                          out.print( " <TD> "+comment+ " </TD> ");    
                out.print( " </TR> ")   ;
                  rs.next();                    
        }
              out.print( " </table> ");
            }
            catch(Exception   e){}
            //catch(IOException   ioe)   {}
            //catch(SQLException   sqle){}
            //catch(NullPointerException   nullpointere)   {out.print( "空指针异常! ");}
        }
    %>
  <%  
  Statement   sql=null;  
    ResultSet   rs=null;  
    int   rowCount=0;       //总的记录数。
        //第一个客户负责建立连接对象:
        if(con==null)
            {   try{Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
                      }
                      catch(ClassNotFoundException   e)
                      {out.print(e);}
                try
                    {con=DriverManager.getConnection( "jdbc:odbc:pubs ", "sa ", "841028 ");
                      //sql=con.createStatement();


                      sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                      //返回可滚动的结果集:
                      rs=sql.executeQuery( "SELECT   *   FROM   students ");
                      //将游标移动到最后一行:
                        rs.last();
                      //获取最后一行的行号:
                      int   number=rs.getRow();
                      //获取记录数:
                        rowCount=number;
                      //设置每页显示的记录数:
                      handlePage.setPageSize(4);
                      //计算总页数:
                      handlePage.setPageCount(rowCount,handlePage.getPageSize());
                      out.print( "共有 "+handlePage.getPageCount()+ "页, ");  
                      out.print( "每页显示 "+handlePage.getPageSize()+ "条记录 ");    
                    }
                catch(SQLException   sqle)  
                    {out.print( "数据库操作失败! ");
                    }
            }
          //其它客户通过同步块使用这个连接:
          else
            {   synchronized(con)
                {     try   {      
                  //sql=con.createStatement();
                  sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                      //返回可滚动的结果集:
                      rs=sql.executeQuery( "SELECT   *   FROM   students ");
                      //将游标移动到最后一行:
                        rs.last();
                      //获取最后一行的行号:
                      int   number=rs.getRow();
                      //获取记录数:
                        rowCount=number;
                      //设置每页显示的记录数:


                      handlePage.setPageSize(4);
                      //计算总页数:
                      handlePage.setPageCount(rowCount,handlePage.getPageSize());
                      out.print( "共有 "+handlePage.getPageCount()+ "页, ");  
                      out.print( "每页显示 "+handlePage.getPageSize()+ "条记录 ");  
                    }
                catch(SQLException   sqle){}
                }
            }
    %>  
    <%--选择显示某页的表单   --%>
<%   String   str=response.encodeRedirectURL( "display.jsp ");%>
<Form   action= " <%=str%> "   method= "post "   >
    显示上一页:
<Input   type= "submit "   name= "a "   value= "previous ">
    显示下一页:
<Input   type=submit   name= "a "   value= "next ">
<br> <br>
    转到第 <Input   type= "text "   size= "5 "   name= "a "   value= "1 "> 页
<Input   type= "submit "   value= "submit ">
</FORM>
  <%   //获取表单提交的信息:
          String   s=request.getParameter( "a ");
              if(s==null)
                    {s= "1 ";
                    }
        if(s.equals( "next "))
                {   int   n=handlePage.getShowPage();   //获取目前的页数。
                            n=(n+1);   //将页数增1。
                      if(n> handlePage.getPageCount())
                            {   n=handlePage.getPageCount();
                            }
                      handlePage.setShowPage(n);                             //显示该页
                    out.print( "目前显示第 "+handlePage.getShowPage()+ "页 ");
                    //将游标移到:
                    rs.absolute((n-1)*handlePage.getPageSize()+1);
                    //显示第该页的内容:
                  if(rs!=null){
                  showList(rs,out,handlePage.getPageSize());    
                  }      


                       
                  }
        else   if(s.equals( "previous "))
                {   int   n=handlePage.getShowPage();   //获取目前的页数。
                            n=(n-1);   //将页数减1。
                    if(n <=0)
                            {   n=1;
                            }        
                      handlePage.setShowPage(n);                             //显示该页
                    out.print( "目前显示第 "+handlePage.getShowPage()+ "页 ");
                    //将游标移到:
                    rs.absolute((n-1)*handlePage.getPageSize()+1);
                    //显示第该页的内容:
                  if(rs!=null){
                  showList(rs,out,handlePage.getPageSize());    
                  }
              }
        else
                {   int   m;
                try{m=Integer.parseInt(s);
                }
                catch(NumberFormatException   e2){m=handlePage.getShowPage();}
                if(m> handlePage.getPageCount())
                            {   m=handlePage.getPageCount();
                            }
                        else   if(m <=0)
                            {m=1;
                            }
                    handlePage.setShowPage(m);
                    out.print( "目前显示第 "+handlePage.getShowPage()+ "页 ");
                    int   n=handlePage.getShowPage();
                      //将游标移到   (n-1)*handlePage.getPageSize()+1;
                    rs.absolute((n-1)*handlePage.getPageSize()+1);
                      //显示该页的内容:
                    if(rs!=null){


                    showList(rs,out,handlePage.getPageSize());
                    }
              }
%>
</BODY>
</HTML>


[解决办法]
很显然。。lz的bean中没有类成员“String a”,调用String s=request.getParameter( "a ")时,肯定是空的咯!
解决:在bean中加private String a,以及相应的getter和setter方法。good luck!!!

热点排行