代码里删除了部分信息,不会影响思路,
看代码的朋友把相应的补全就行了,
如果有不足的地方,望各位提出意见
Servlet代码
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ShowServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
List list = List集合
// 下面为固定写法
String page = request.getParameter("page");
String beginpages = request.getParameter("begin");
//转向路径
String url="转向你的jsp页面路径";
int pagesize = 8;// 每页条数
PageUtil.pageSet(request, response, pagesize, page, beginpages, listAffiche, url);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
jsp页面代码:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>test</title>
<style type="text/css">
.table_border td{border-top:1px #DDD solid;border-right:1px #DDD solid;}
.table_border{border-bottom:1px #DDD solid;border-left:1px #DDD solid;}
</style>
</head>
<body>
<div align="center">
<table class="table_border">
<!--标签里都是固定的写法,与util工具类对应-->
<c:forEach items="${list}" var="temp" begin="${begin}" end="${end-1}">
<tr>
<td >${temp.property1 }</td>
<td>${temp.property2 }</td>
<td>${temp.property3 }</td>
</tr>
</c:forEach>
<tr>
<td colspan="2" align="right">
共${pageNum}页 每页${pagesize }条 共 ${sumCount} 条记录
</td>
<td colspan="3" align="right">
<a href="showSerlvet.do?page=first&begin=${begin}">首页</a>
<a href="showSerlvet.do?page=last&begin=${begin}">上一页</a>
<a href="showSerlvet.do?page=next&begin=${begin}">下一页</a>
<a href="showSerlvet.do?page=end&begin=${begin}">尾页</a>
</td>
</tr>
</table>
</div>
</body>
</html>
PageUtil--工具类代码
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @类名称:PageUtil
* @类描述:分页工具类
* @创建人:Ray
* @修改人:Ray
* @version 1.0
*
*/
public class PageUtil {
private static int[] fpage(String page, int beginpage, int pagesize,
List list) {
if (page != null) {
if (page.equals("first")) {
beginpage = 0;
} else if (page.equals("last")) {
if (beginpage == 0) {
} else {
beginpage = beginpage - pagesize;
}
} else if (page.equals("next")) {
if (beginpage < list.size() - pagesize) {
beginpage = beginpage + pagesize;
}
} else if (page.equals("end")) {
if ((list.size() % pagesize) == 0) {
beginpage = list.size() - pagesize;
} else {
pagesize = list.size() % pagesize;
beginpage = list.size() - pagesize;
}
}
}
int[] set = { beginpage, pagesize };
return set;
}
/**
* 描述:统计 页数和记录条数
* @param int pagesize List listObj
* @return int[0] 页数 int[1] 记录条数
*/
private static int[] getTongji(int pagesize, List listObj) {
int sumCount = listObj.size();
int pageNum = (int) sumCount / pagesize;
if (sumCount % pagesize > 0) {// 如果有余数
pageNum = pageNum + 1;
}
int[] set = { pageNum, sumCount };
return set;
}
/***
* 描述:分页的设置及处理
* @author Ray
* @param int pagesize--每页条数
* String page --固定写法
* String beginpages--固定写法
* List list--要分页的List集合
* String --转向路径
*
* */
public static void pageSet(HttpServletRequest request,
HttpServletResponse response, int pagesize, String page,
String beginpages, List list, String url) throws ServletException,
IOException {
int[] tongji = getTongji(pagesize, list);
int pageNum = tongji[0];
int sumCount = tongji[1];
request.setAttribute("pageNum", pageNum);
request.setAttribute("sumCount", sumCount);
request.setAttribute("list", list);
int beginpage = 0;
if (beginpages != null) {
beginpage = Integer.parseInt(beginpages);
}
request.setAttribute("pagesize", pagesize);
int[] aa = fpage(page, beginpage, pagesize, list);
request.setAttribute("begin", aa[0]);
if (aa[0] * aa[1] == 0) {
request.setAttribute("end", aa[1]);
} else {
request.setAttribute("end", aa[0] + pagesize);
}
request.getRequestDispatcher(url).forward(request, response);
}
}