出错提示如下:org.apache.jasper.JasperException: Exception in JSP: /zongping/z_item.jsp:167164:  for (i = 1; i <= (intPage - 1) * pageLine; i++)
165:  rs.next();
166:  for (i = 1; i <= pageLine; i++) {
167:  if (rs.next()) {
168:  String item_ID = rs.getString("item_ID");
169:  String unit_ID = rs.getString("unit_ID");
170:  String item_name = rs.getString("item_name");
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causejava.lang.NullPointerException
org.apache.jsp.zongping.z_005fitem_jsp._jspService(z_005fitem_jsp.java:222)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    z_item.jsp页面如下:
    <%@ page language="java" import="java.sql.*" contentType="text/html;charset=GB2312"%>
    <jsp:useBean id="z_item" scope="page" class="opendb.opendb" />
    <%
    String sort = "网络";//request.getParameter("sort"); String sqlstring = "select * from I_item as x where  sort like '%"
    + sort
    + "%' order by (select avg(score6) from I_distribute as y where y.item_ID=x.item_ID) desc";
    String sql1 = "select count(*)as cnt from I_item"; ResultSet rs = z_item.executeQuery(sqlstring); int pageLine = 10;
    int totalRec = 0;
    int intPage = 1;
    int i;
    if (request.getParameter("page") != null)
    intPage = Integer.parseInt(request.getParameter("page"));
    try {
    ResultSet countrs = z_item.executeQuery(sql1);
    if (countrs.next())
    totalRec = countrs.getInt("cnt");
    countrs.close();
    z_item.closeStmt();
    } catch (Exception e) {
    e.printStackTrace();
    }
    int intPageCount = 0;
    intPageCount = (totalRec + pageLine - 1) / pageLine;
    %>关键代码如下:太长了只能分开发,还请各位仁兄多指教!!
      

  2.   

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td>
    <img src="../images/z_list1.gif" width="140" height="23" usemap="#Map" border="0">
    </td>
    </tr>
    <tr>
    <td>
    <form name=theform method=post action="z_item.jsp">
    <table width="100%" border="0" cellspacing="1" cellpadding="1" align="center">
    <tr>
    <td colspan="2" bgcolor="#d9d8dc"></td>
    </tr>
    <tr>
    <td bgcolor="#d9d8dc" colspan="2" align="center">
    <p>
    &nbsp;
    </p>
    </td>
    </tr>
    <tr>
    <td bgcolor="#d9d8dc" align="center" width="25%">
    <font color="#000099">选择项目类别</font>
    </td>
    <td>
    <select name=sort>
    <option selected value="网络">
    ---请选择---
    </option>
    <option value="软件外包"></option>
    <option value="计算机科学"></option>
    <option value="经营管理"></option> </select> </td>
    </tr>
    <tr>
    <td bgcolor="#d9d8dc" align="center" colspan="2">
    &nbsp;
    </td>
    </tr>
    <tr bgcolor="#d9d8dc" align="center">
    <td colspan="2">
    <input type=image src="../images/refer.gif" width="62" height="22" name="refer">
    </td>
    </tr>
    </table>
    </form>
    </td>
    </tr>
    <tr>
    <td>
    <font size="2" color="#000099">&nbsp;&nbsp;按*&nbsp;*<%=sort%>查询</font>
    <br>
    <table width="100%" border="1" bordercolor="#CCCCCC" cellpadding="0" cellspacing="0">
    <tr>
    <td width="20%" height="17" bgcolor="#d9d8dc">
    <font size="2" color="#000099">项目名称</font>
    </td>
    <td width="20%" height="17" bgcolor="#d9d8dc">
    <font size="2" color="#000099">申报单位</font>
    </td>
    <td width="20%" height="17" bgcolor="#d9d8dc">
    <font size="2" color="#000099">申请者</font>
    </td>
    <td width="20%" height="17" bgcolor="#d9d8dc">
    <font size="2" color="#000099">申报日期</font>
    </td>
    <td width="20%" height="17" colspan="2" bgcolor="#d9d8dc">
    <font size="2" color="#000099">平均分</font>
    </td>
    </tr>
    <%
    String savg = "";
    if (intPageCount > 0) {
    for (i = 1; i <= (intPage - 1) * pageLine; i++)
    rs.next();
    for (i = 1; i <= pageLine; i++) {
    if (rs.next()) {
    String item_ID = rs.getString("item_ID");
    String unit_ID = rs.getString("unit_ID");
    String item_name = rs.getString("item_name"); String sql3 = "select avg(score6) as savg from I_distribute where item_ID='"
    + item_ID + "' and score6>0";
    ResultSet rs3 = z_item.executeQuery(sql3);
    if (rs3.next()) {
    savg = rs3.getString("savg");
    if (savg == null) {
    savg = "&nbsp;";
    } else {
    savg = savg.substring(0, 4);
    }
    }
    String applicant = rs.getString("applicant");
    String fill_date = (rs.getString("fill_date"));
    String unit_name = "";
    String sql2 = "select unit_name from I_s_info where unit_ID='"
    + unit_ID + "'";
    ResultSet rs2 = z_item.executeQuery(sql2);
    if (rs2.next()) {
    unit_name = rs2.getString("unit_name");
    }
    %>
    <tr>
    <td>
    <font size="2" color="#000099"><a href="z_showItem.jsp?item_ID=<%=item_ID%>"><%=item_name%>
    </a> </font>
    </td>
    <td>
    <font size="2" color="#000099"><%=unit_name%> </font>
    </td>
    <td>
    <font size="2" color="#000099"><%=applicant%> </font>
    </td>
    <td>
    <font size="2" color="#000099"><%=fill_date%> </font>
    </td>
    <td>
    <font size="2" color="#000099"><%=savg%> </font>
    </td>
    </tr>
    <%
    }
    }
    }
    %>
    </table>
      

  3.   

    if (rs.getString("item_ID")!=null) {String item_ID = rs.getString("item_ID");}
    else String item_ID = "";下面这两个也一样.
    String unit_ID = rs.getString("unit_ID");
    String item_name = rs.getString("item_name");RS.NEXT 只说明有记录,但不表明每个字段都会有值,所以可能出现有NULL值的情况.
      

  4.   

    theforever(碧海情天)加上这样的语句还是不行呀!!
      

  5.   

    opendb.opendb.java的executeQuery方法贴来看看
    一开始的错误信息
    167: if (rs.next()) {
    行出错的话,有可能是查询后connection给关了
      

  6.   

    好的,
    package opendb;
    import java.sql.*;public class opendb

        String strDBDriver="oracle.jdbc.driver.OracleDriver";
        String strDBUrl="jdbc:oracle:thin:@127.0.0.1:1521:oradb01";
        private Connection conn=null;
        private Statement stmt=null;
        ResultSet rs=null;
        //<!--注册数据库驱动程序-->
        public opendb()
        {
         try
         {
             Class.forName(strDBDriver);
         }
         //异常处理
         catch(java.lang.ClassNotFoundException e) 
            {
                System.err.println("opendb():"+e.getMessage());
            }
        }
        //<!--建立数据库连接及定义数据查询-->
        public ResultSet executeQuery(String sql)
        {
            rs=null;
            try
            {
             conn=DriverManager.getConnection(strDBUrl,"system","mima123");//创建数据库连接对象 
                stmt=conn.createStatement();
                rs=stmt.executeQuery(sql);
            }
            catch(SQLException ex) 
            {
            
             System.err.println("aq.executeQuery:"+ex.getMessage());
            }
            return rs;
        }
        //<!--定义数据操作-->
        public void executeUpdate(String sql)
        {
            stmt=null;
            rs=null;
            try
            {
             conn=DriverManager.getConnection(strDBUrl,"system","mima123");
             stmt=conn.createStatement();
             stmt.executeUpdate(sql);
             stmt.close();
             conn.close();
            }
            catch(SQLException ex)
            {
                System.err.println("aq.executeQuery:"+ex.getMessage());
            }
        }
        //<!--关闭数据库连接-->
        public void closeStmt()
        {
            try
            {
             stmt.close();
            }
            catch(SQLException e)
            {
             e.printStackTrace();
            }
        }
        public void closeConn()
        {
        try
        {
        conn.close();
        }
        catch(SQLException e)
        {
        e.printStackTrace();
        }
        }
    } 大哥QQ号多少呀,可以交个朋友吗?
      

  7.   

    你用这个判断rs.next()判断什么?要不你就用while(rs.next())或者用!rs.bof&&!rs.eof然后再rs.next(),就不会出错了。
      

  8.   

    for ()循环和While不是一样的吗?能说清楚点吗?不懂!
      

  9.   

    NullPointerException!!!!!!!都已经报这个错误了,你把容器编译好的java文件打开。不久可以追查到了吗?????
      

  10.   

    for (i = 1; i <= (intPage - 1) * pageLine; i++)
    rs.next();
    for (i = 1; i <= (intPage - 1) * pageLine; i++)后面少了一个{,
    造成循环做了,rs.next();
      

  11.   

    xiaoaojianhu17() ( ) 信誉:100    Blog   加为好友  2007-06-11 15:32:01  得分: 0  
     
     
       for ()循环和While不是一样的吗?能说清楚点吗?不懂!
     
     ----------------------------------------------------------------------
    差多了,首先while是先判断再执行,而for在执行次数上就要多一个,其次,代码优化,代码效率都是while要好得多。