<%@ page language="java"  pageEncoding="gb2312"%>
<jsp:directive.page import="java.sql.ResultSet"/>
<%
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>查询手机</title>
  
  </head>
  <jsp:useBean id="JDBConnection" class="database.JDBConnection"/>
  <body>
    <%
     String price=request.getParameter("price");
     String sql=null;
     if(price.equals("1000"))
     {
      sql="select * from mobile where 手机价格 <1000";
     }
     if(price.equals("2000"))
     {
     sql="select * from mobile where 手机价格 between 1000 and 2000";
     }
     if(price.equals("3000"))
     {
       sql="select * from mobile where 手机价格 between 2000  and 3000";
  
     }
     if(price.equals("4000"))
     {
     sql="select * from mobile where 手机价格 >3000";
     }
     
     ResultSet rs=null;
           int pagesize=5;
           int rowcount=0;
           int pagecount=1;
           int showpage=1;
           
           
           rs=JDBConnection.executeQuery(sql);
           rs.last();
           rowcount=rs.getRow();
           out.println("数据库的手机总共有"+rowcount+"部,相关信息如下");
           showpage=1;
           pagecount=((rowcount%pagesize)==0?(rowcount/pagesize):(rowcount/pagesize)+1);
           String topage=request.getParameter("topage");
           if(topage!=null)
           {
             showpage=Integer.parseInt(topage);
             if(showpage>pagecount)
             {
              showpage=pagecount;
             }
             else if(showpage<=0)
             {
               showpage=1;
             }
           }
           rs.absolute((showpage-1)*pagesize+1);
           for(int i=1;i<=pagesize;i++)
          {
          %>
<table width="685" height="114"  align="center" bordercolor="#CCCCFF" >
<tr>
        <td width="106" rowspan="3" bgcolor="#FFFFFF"><img  src="<%= rs.getString("picture")%>"><a href="cart_insert.jsp?a=<%=rs.getString("手机价格")%>&&b=<%=rs.getString("手机型号")%>&&c=<%=rs.getString("手机种类")%>"><img src="picture/web/cart_new.gif" width="120" height="23" border=0 align="bottom"></a></td>
        <td width="232" height="20" bgcolor="#CCCCFF"><%= rs.getString("手机种类")%><%= rs.getString("手机型号")%></td>
        <td width="156" bgcolor="#CCCCFF"><div align="center">手机价格</div></td>
        <td width="173" bgcolor="#CCCCFF"><%= rs.getInt("手机价格")%>元</td>  </tr>
      <tr>
        <td height="59" colspan="3"><%= rs.getString("手机信息")%></td>
      </tr>
      <tr>
       <td height="25" colspan="3" bgcolor="#CCCCFF"><center>手机具体信息</center></td>
      </tr>
      
<%
          if(!rs.next())
          break;
         }
%>        </table>
<table align="center">
           <tr>
            <td>共<%= pagecount%>页</td>
            <td><%= pagesize%>条/页</td>
            <td><a href="mobile_price_select.jsp?topage=<%=1%>">第一页</a></td>
            <td><a href="mobile_price_select.jsp?topage=<%=showpage-1%>">上一页</a></td>
            <td><a href="mobile_price_select.jsp?topage=<%=showpage+1%>">下一页</a></td>
            <td><a href="mobile_price_select.jsp?topage=<%=pagecount%>">最后一页</a></td>
            <td>当前第<input name="topage" type="text" size="1" value="<%=showpage%>" disabled="disabled"/>页</td>
           
           </tr>
  </table> 
</body>
</html>
[align=center]
点击下一页就出错[/align]
type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
org.apache.jasper.JasperException: Exception in JSP: /mobile_price_select.jsp:2118:     <%
19:      String price=request.getParameter("price");
20:      String sql=null;
21:      if(price.equals("1000"))
22:      {
23:       sql="select * from mobile where 手机价格 <1000";
24:      }
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
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 cause 
java.lang.NullPointerException
org.apache.jsp.mobile_005fprice_005fselect_jsp._jspService(mobile_005fprice_005fselect_jsp.java:76)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
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)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

解决方案 »

  1.   

    <td> <a href="mobile_price_select.jsp?topage= <%=showpage+1%>">下一页 </a> </td> 
    这里是你要发的请求?toppage
     <% 
    19:      String price=request.getParameter("price"); 
    20:      String sql=null; 
    21:      if(price.equals("1000")) 
    22:      { 
    23:      sql="select * from mobile where 手机价格 <1000"; 
    24:      } 
    当你点击下一叶的时候并没有传递price参数。这个时候报NullPointerException
    解决办法:
     把你的业务逻辑分开!
    1:接受客户的手机价格,显示出结果集
    2:在结果集上实现分页。
    你就需要去判断用户到底是在请求数据还是在请求分页。分开做就OK了
      

  2.   

    空指针异常..没有请求参数'price'..
      

  3.   

    price空指针,得到的是null
    那句改成if("1000".equals(price)) )
      

  4.   

    分页的超链接后面在加上一个参数price就OK了么!
      

  5.   

    还有你没有处理topage参数?晕!