<%@ page language="java" 
import="java.sql.*, com.smpl.bean.*"
contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
<% 
request.setCharacterEncoding("GBK");
String name = request.getParameter("cond");
System.out.println(name);
Connection conn = JdbcUtils.getConn();
String countRecSql = "select count(*) from sample where name like ?";
PreparedStatement pstmt = conn.prepareStatement(countRecSql);
pstmt.setString(1,"%"+name+"%");
ResultSet rs = pstmt.executeQuery();
rs.next();
int recordCount = rs.getInt(1);
if(recordCount==0){
response.sendRedirect("NoRecord.jsp");
return;
}

int pageSize = 3;
int totalPages;
int pageNo;
int startLoc;
String strPage;
 %>
</head>
 <body background="images/demo4.jpg">
   <div align="center">
<%    
if(recordCount % pageSize == 0){  
totalPages = recordCount / pageSize;  
}else {  
totalPages = (recordCount / pageSize) + 1;  
}  
  
strPage = request.getParameter("pageNo"); 
if(strPage == null){  
pageNo = 1;  
}else {  
pageNo = Integer.parseInt(strPage);  
if(pageNo < 1){  
pageNo = 1;  
}else if(pageNo >= totalPages){  
pageNo = totalPages;  
}  
}  
  
  String recSql="select * from sample where name like ? " + 
"limit " + (pageNo - 1 ) * pageSize+ "," + pageSize; 
pstmt = conn.prepareStatement(recSql); 
pstmt.setString(1,"%"+name+"%"); 
rs = pstmt.executeQuery();   
%>
数据展示<br/>
<table width="50%" border="1" >
<tr bgcolor="gray">
<td>姓名</td>
<td>爱好</td>
<td>编辑</td>
<td>删除</td>
</tr>
<%
int i = 1;
while(rs.next()){
 %>
 <tr>
  <td><%=rs.getString(2) %></td>
  <td><%=rs.getString(3) %></td>
  <td><a href="Edit.jsp?id=<%=rs.getString("id") %>">编辑</a></td>
  <td><a href="Delete.jsp?id=<%=rs.getString("id") %>">删除</a></td>
 </tr>
 <%
  i++;
  }
  %>
  <tr>
   <td colspan="4" align="center" >
<a href="Disp.jsp?pageNo=<%=0 %>">首页</a>&nbsp;&nbsp;
   <a href="Disp.jsp?pageNo=<%=pageNo-1 %>">上一页</a>&nbsp;&nbsp;
   <a href="Disp.jsp?pageNo=<%=pageNo+1 %>&cond=<%=name %>">下一页</a>&nbsp;&nbsp;
   <a href="Disp.jsp?pageNo=<%=totalPages %>">尾页</a>&nbsp;&nbsp;
   </td>
  </tr>
</table><br/>
</div>
  </body>
</html>在下一页中已经包含了查询条件,不知道为什么还报空指针。

解决方案 »

  1.   


    description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause java.lang.NullPointerException
    org.apache.jsp.Disp_jsp._jspService(Disp_jsp.java:65)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
    不好意思,忘了贴了。
      

  2.   

     <tr>
                 <td><%=rs.getString(2) %></td>
                 <td><%=rs.getString(3) %></td>
                 <td><a href="Edit.jsp?id=<%=rs.getString("id") %>">编辑</a></td>
                 <td><a href="Delete.jsp?id=<%=rs.getString("id") %>">删除</a></td>
             </tr>
           
              <tr>
                  <td colspan="4" align="center" >
                    <a href="Disp.jsp?pageNo=<%=0 %>">首页</a>&nbsp;&nbsp;
                      <a href="Disp.jsp?pageNo=<%=pageNo-1 %>">上一页</a>&nbsp;&nbsp;
                      <a href="Disp.jsp?pageNo=<%=pageNo+1 %>&cond=<%=name %>">下一页</a>&nbsp;&nbsp;
                      <a href="Disp.jsp?pageNo=<%=totalPages %>">尾页</a>&nbsp;&nbsp;
                  </td>
              </tr>
      <%
                     i++;
                 }
              %>
      

  3.   

    "select top "+pageSize+" * from sample where 数据库中的唯一标识列(如id) not in(select top "+(pageNo-1)*pageSize+" 数据库中的唯一标识列(如id) from sample )";你的sql居然用name应该是个String型的数据,怎么去分页,至少得用int型的去分页比较好
      

  4.   

    应该是<a href="Disp.jsp?pageNo=<%=pageNo+1 %>&cond=<%=name %>">下一页</a>&nbsp;&nbsp;
    导致的错误,当你单击下一页的时候pageNo虽然传递进去了,但是cond=<%=name%>传递的参数却是空,而你又用String countRecSql = "select count(*) from sample where name like ?";
    进行查询(你把这条查询语句放到查询分析器里面测试一下,应该是错误的)。
      

  5.   

    Disp_jsp.java:65有错误
    到apache-tomcat\work\Catalina\localhost\你的工程下找这个文件,看看65行是什么。
      

  6.   

    jsp 页面上写java代码 懒的看空指针是最基本的异常 你在异常出现前的地方将个个参数值输出看看
      

  7.   


    <%@ page language="java" 
    import="java.sql.*, com.smpl.bean.*"
    contentType="text/html; charset=GBK"
        pageEncoding="GBK"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
    <title>Insert title here</title>
    <% 
    request.setCharacterEncoding("GBK");
    String name = request.getParameter("cond");
    System.out.println(name); // 访问前一页或者后一页时会打印出????四个问号。
                    Connection conn = JdbcUtils.getConn();
    String countRecSql = "select count(*) from sample where name like ?";
    PreparedStatement pstmt = conn.prepareStatement(countRecSql);
    pstmt.setString(1,"%"+name+"%");
    ResultSet rs = pstmt.executeQuery();
    rs.next();
    int recordCount = rs.getInt(1);
    if(recordCount==0){
    response.sendRedirect("NoRecord.jsp");
    return;
    }

    int pageSize = 3;
    int totalPages;
    int pageNo;
    int startLoc;
    String strPage;
     %>
    </head>
     <body background="images/demo4.jpg">
       <div align="center">
    <%    
    if(recordCount % pageSize == 0){  
    totalPages = recordCount / pageSize;  
    }else {  
    totalPages = (recordCount / pageSize) + 1;  
    }  
      
    strPage = request.getParameter("pageNo"); 
    if(strPage == null){  
    pageNo = 1;  
    }else {  
    pageNo = Integer.parseInt(strPage);  
    if(pageNo < 1){  
    pageNo = 1;  
    }else if(pageNo >= totalPages){  
    pageNo = totalPages;  
    }  
    }  
      
      String recSql="select * from sample where name like ? " + 
    "limit " + (pageNo - 1 ) * pageSize+ "," + pageSize; 
    pstmt = conn.prepareStatement(recSql); 
    pstmt.setString(1,"%"+name+"%"); 
    rs = pstmt.executeQuery();   
    %>
    数据展示<br/>
    <table width="50%" border="1" >
    <tr bgcolor="gray">
    <td>姓名</td>
    <td>爱好</td>
    <td>编辑</td>
    <td>删除</td>
    </tr>
    <%
    int i = 1;
    while(rs.next()){
     %>
     <tr>
      <td><%=rs.getString(2) %></td>
      <td><%=rs.getString(3) %></td>
      <td><a href="Edit.jsp?id=<%=rs.getString("id") %>">编辑</a></td>
      <td><a href="Delete.jsp?id=<%=rs.getString("id") %>">删除</a></td>
     </tr>
     <%
      i++;
      }
      %>
      <tr>
       <td colspan="4" align="center" >
    <a href="Search.jsp?pageNo=<%=0 %>&cond=<%=name %>">首页</a>&nbsp;&nbsp;
       <a href="Search.jsp?pageNo=<%=pageNo-1 %>&cond=<%=name %>">上一页</a>&nbsp;&nbsp;
       <a href="Search.jsp?pageNo=<%=pageNo+1 %>&cond=<%=name %>">下一页</a>&nbsp;&nbsp;
       <a href="Search.jsp?pageNo=<%=totalPages %>&cond=<%=name %>">尾页</a>&nbsp;&nbsp;
       </td>
      </tr>
      <%    %>
    </table><br/>
    </div>
      </body>
    </html>这是修改之后的代码。空指针异常不报告,但是无法得到前一页后一页的数据。后台打印出URL中的参数为乱码~~~
      

  8.   

    对中文参数编码js encodeURI
      

  9.   

    long.exception 建议你看看你传递的参数是否接受到了。重点看你那个 pageNo 这个参数,看看你写的这段代码 strPage = request.getParameter("pageNo"); 
            if(strPage == null){  
                pageNo = 1;  
            }else {  
                pageNo = Integer.parseInt(strPage);  
                if(pageNo < 1){  
                    pageNo = 1;  
                }else if(pageNo >= totalPages){  
                    pageNo = totalPages;  
                }  
            }  
    问题多多。你要首先判断你接受的这个参数是否有值
      

  10.   

    如何访问下一页,首页,最后一页的时候,参数name打印出来都是????,估计是乱码
    request.setEncoding也已经用过,不起作用。
      

  11.   

    乱码可以用encodeURI,还要加上Filter,再设置下tomcat的编码,所有编码一致,
      

  12.   

    最后是在tomcat的server.xml中设定之后解决的。还是谢谢各位了。散分。