<%@ 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>
<a href="Disp.jsp?pageNo=<%=pageNo-1 %>">上一页</a>
<a href="Disp.jsp?pageNo=<%=pageNo+1 %>&cond=<%=name %>">下一页</a>
<a href="Disp.jsp?pageNo=<%=totalPages %>">尾页</a>
</td>
</tr>
</table><br/>
</div>
</body>
</html>在下一页中已经包含了查询条件,不知道为什么还报空指针。
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.
不好意思,忘了贴了。
<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>
<a href="Disp.jsp?pageNo=<%=pageNo-1 %>">上一页</a>
<a href="Disp.jsp?pageNo=<%=pageNo+1 %>&cond=<%=name %>">下一页</a>
<a href="Disp.jsp?pageNo=<%=totalPages %>">尾页</a>
</td>
</tr>
<%
i++;
}
%>
导致的错误,当你单击下一页的时候pageNo虽然传递进去了,但是cond=<%=name%>传递的参数却是空,而你又用String countRecSql = "select count(*) from sample where name like ?";
进行查询(你把这条查询语句放到查询分析器里面测试一下,应该是错误的)。
到apache-tomcat\work\Catalina\localhost\你的工程下找这个文件,看看65行是什么。
<%@ 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>
<a href="Search.jsp?pageNo=<%=pageNo-1 %>&cond=<%=name %>">上一页</a>
<a href="Search.jsp?pageNo=<%=pageNo+1 %>&cond=<%=name %>">下一页</a>
<a href="Search.jsp?pageNo=<%=totalPages %>&cond=<%=name %>">尾页</a>
</td>
</tr>
<% %>
</table><br/>
</div>
</body>
</html>这是修改之后的代码。空指针异常不报告,但是无法得到前一页后一页的数据。后台打印出URL中的参数为乱码~~~
if(strPage == null){
pageNo = 1;
}else {
pageNo = Integer.parseInt(strPage);
if(pageNo < 1){
pageNo = 1;
}else if(pageNo >= totalPages){
pageNo = totalPages;
}
}
问题多多。你要首先判断你接受的这个参数是否有值
request.setEncoding也已经用过,不起作用。