1.通过java生成分页代码
PageInfo.java
package com.paging;
public class PageInfo {
public static String getAdminPagingNavigation(Page<?> page) {
StringBuffer displayInfo = new StringBuffer();
displayInfo.append("<ul class='fr'>");
displayInfo.append("<li>每页" + page.getPageSize() + "条 / </li>");
displayInfo.append("<li>共" + page.getTotalCount() + "条</li>");
switch (page.getPageSize()) {
case 10:
displayInfo
.append("<li><a href="javascript:pageSize('10');" class="current"> 10 </a>");
displayInfo
.append("<a href="javascript:pageSize('20');" > 20 </a>");
displayInfo
.append("<a href="javascript:pageSize('30');" > 30 </a>");
displayInfo
.append("<a href="javascript:pageSize('50');" > 50 </a>");
break;
case 20:
displayInfo
.append("<li><a href="javascript:pageSize('10');" > 10 </a>");
displayInfo
.append("<a href="javascript:pageSize('20');" class="current"> 20 </a>");
displayInfo
.append("<a href="javascript:pageSize('30');" > 30 </a>");
displayInfo
.append("<a href="javascript:pageSize('50');" > 50 </a>");
break;
case 30:
displayInfo
.append("<li><a href="javascript:pageSize('10');" > 10 </a>");
displayInfo
.append("<a href="javascript:pageSize('20');" > 20 </a>");
displayInfo
.append("<a href="javascript:pageSize('30');" class="current" > 30 </a>");
displayInfo
.append("<a href="javascript:pageSize('50');" > 50 </a>");
break;
case 50:
displayInfo
.append("<li><a href="javascript:pageSize('10');" > 10 </a>");
displayInfo
.append("<a href="javascript:pageSize('20');" > 20 </a>");
displayInfo
.append("<a href="javascript:pageSize('30');" > 30 </a>");
displayInfo
.append("<a href="javascript:pageSize('50');" class="current" > 50 </a>");
break;
default:
displayInfo
.append("<li><a href="javascript:pageSize('10');" > 10 </a>");
displayInfo
.append("<a href="javascript:pageSize('20');" > 20 </a>");
displayInfo
.append("<a href="javascript:pageSize('30');" > 30 </a>");
displayInfo
.append("<a href="javascript:pageSize('50');" > 50 </a>");
break;
}
displayInfo
.append("<li class='fir'><a href="javascript:pageInfo('0');"><span>首页</span></a></li>");
if (page.isHasPre()) {
displayInfo
.append("<li class='pre'><a href="javascript:pageInfo('"
+ (page.getPageNo() - 1)
+ "');" ><span>上一页</span></a></li>");
} else {
displayInfo
.append("<li class='pre disabled'><a href="javascript:void(0)" ><span>上一页</span></a></li>");
}
if (page.getPageNo() == 1) {
displayInfo
.append("<li class='cur'><a href="javascript:void(0);"><span>1</span></a></li>");
} else {
displayInfo
.append("<li><a href="javascript:pageInfo('1');"><span>1</span></a></li>");
}
if (page.getTotalPages() > 2) {
if (page.getPageNo() != 1
&& page.getPageNo() != page.getTotalPages()) {
displayInfo
.append("<li class='cur'><a href="javascript:void(0);"><span>"
+ page.getPageNo() + "</span></a></li>");
} else {
displayInfo
.append("<li><a href="javascript:void(0);"><span>...</span></a></li>");
}
}
if (page.getTotalPages() > 1) {
if (page.getPageNo() == page.getTotalPages()) {
displayInfo
.append("<li class='cur'><a href="javascript:void(0);"><span>"
+ page.getTotalPages() + "</span></a></li>");
} else {
displayInfo.append("<li><a href="javascript:pageInfo('"
+ page.getTotalPages() + "');"><span>"
+ page.getTotalPages() + "</span></a></li>");
}
}
if (page.isHasNext()) {
displayInfo
.append("<li class='next'><a href="javascript:pageInfo('"
+ page.getNextPage()
+ "')"><span>下一页</span></a></li>");
} else {
displayInfo
.append("<li class='next disabled'><a href="javascript:void(0);"><span>下一页</span></a></li>");
}
displayInfo
.append("<li class='last'><a href="javascript:pageInfo('"
+ page.getTotalPages()
+ "')"><span>末页</span></a></li>");
displayInfo
.append("<li><span class='ma1'>转到</span><span><input id='numberSize' type='text' class='uspagesrk'/></span><span class='ma1'>页</span></li>");
displayInfo
.append("<li><input type='button' class='btn btn-blue' onclick="inputPageNo('"
+ page.getTotalPages()
+ "');" value='确定' /></li></ul>");
return displayInfo.toString();
}
}
2.创建Page类和Parameter类用于存放分页信息和结果
package com.paging;
import java.util.ArrayList;
import java.util.List;
@SuppressWarnings("serial")
public class Page<T> extends Parameter{
//存放结果的
private List<T> result = new ArrayList<T>();
//总数据个数
private long totalCount = 0;
//一页面记录数
private static final int MAX_PAEE_SIZE = 200;
public Page() {
// TODO Auto-generated constructor stub
}
public List<T> getResult() {
return result;
}
@SuppressWarnings("unchecked")
public <M extends T> void setResult(List<M> result) {
this.result = (List<T>) result;
}
public long getTotalCount() {
return totalCount;
}
public void setTotalCount(long totalCount) {
this.totalCount = totalCount;
}
public int getTotalPages(){
if(totalCount == 0){
return 0;
}else{
int count = (int) (totalCount / pageSize);
if(totalCount % pageSize > 0){
count = count + 1 ;
}
return count;
}
}
//下一页
public boolean isHasNext() {
return (pageNo + 1 <= getTotalPages());
}
public int getNextPage(){
if (isHasNext())
return pageNo + 1;
else
return pageNo;
}
//上一页
public boolean isHasPre() {
return (pageNo - 1 >= 1);
}
public int getPrePage() {
if (isHasPre())
return pageNo - 1;
else
return pageNo;
}
}
package com.paging;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
@SuppressWarnings("serial")
public class Parameter implements Serializable{
//默认一页记录数
public static final int DEFAULT_PAGE_SIZE = 2;
public static final boolean DEFAULT_AUTO_COUNT = true;
protected int pageNo = 1;
protected int pageSize = DEFAULT_PAGE_SIZE;
protected boolean autoCount = DEFAULT_AUTO_COUNT;
//用来存放数据库操作的条件
private Map<String, Object> filters = new LinkedHashMap<String, Object>();
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
if(pageSize > 0){
this.pageSize = pageSize;
}
}
public boolean isPageSizeSetted() {
return pageSize > -1;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
if(pageNo > 0){
this.pageNo = pageNo;
}
}
public Map<String, Object> getFilters() {
return filters;
}
public void setFilters(Map<String, Object> filters) {
this.filters = filters;
}
public void addFilters(String propertyName, Object propertyValue){
this.filters.put(propertyName, propertyValue);
}
public boolean isFiltersSetted(){
return filters != null && !filters.isEmpty();
}
public boolean isFiltersed(){
return filters != null && filters.size() > 0;
}
}
3.js用于控制和触发分页栏的按钮
// 上下页
function pageInfo(pageNo) {
$("#pageNo").val(pageNo);
$("#pageForm").submit();
}
//分页确定
function inputPageNo(pageNo){
var num = $.trim($("#numberSize").val());
num = parseInt(num);
if (isNaN(num)) {
return;
} else if (num == ""){
return;
} else if (num<1){
return;
} else if (num > pageNo){
return;
} else {
$("#pageNo").val(num);
$("#pageForm").submit();
}
}
//每页显示条数
function pageSize(size){
$("#pageNo").val(1);
$("#pageSize").val(size);
$("#pageForm").submit();
}
function prePage(pageNo) {
if(pageNo < 1) {
pageNo = 1;
}
pageInfo(pageNo);
}
function nextPage(pageNo, totalPage) {
if(pageNo > totalPage) {
pageNo = totalPage;
}
pageInfo(pageNo);
}
4.测试的页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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=UTF-8">
<title>This is the index.jsp</title>
<script type="text/javascript" src="/js/pageInfo.js"></script>
<script type="text/javascript" src="/js/jquery.js" ></script>
</head>
<body>
<form action="/pudding/list.do" method="post" id="pageForm">
<input type="hidden" name="pageNo" id="pageNo" value="${page.pageNo}" />
<input type="hidden" name="pageSize" id="pageSize" value="${page.pageSize}" />
</form>
<c:forEach items="${page.result}" var="accountBook" varStatus="vs">
<tr>
<td><p>${vs.count}</p></td>
<td><p>${accountBook.accountId}</p></td>
<td><p>${accountBook.costMany}</p></td>
</c:forEach>
------------------------------------------
<div>${pageInfo}</div>
------------------------------------------
</body>
</html>
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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=UTF-8">
<title>This is the index.jsp</title>
<script type="text/javascript" src="/js/pageInfo.js"></script>
<script type="text/javascript" src="/js/jquery.js" ></script>
</head>
<body>
<form action="/pudding/list.do" method="post" id="pageForm">
<input type="hidden" name="pageNo" id="pageNo" value="${page.pageNo}" />
<input type="hidden" name="pageSize" id="pageSize" value="${page.pageSize}" />
</form>
<c:forEach items="${page.result}" var="accountBook" varStatus="vs">
<tr>
<td><p>${vs.count}</p></td>
<td><p>${accountBook.accountId}</p></td>
<td><p>${accountBook.costMany}</p></td>
</c:forEach>
------------------------------------------
<div>${pageInfo}</div>
------------------------------------------
</body>
</html>
5.mvc
--------------------------------------------------------------------------------------------
public Page<AccountBook> findAll(Page<AccountBook> page){
StringBuffer sql = new StringBuffer("select * from accountbook");
String sql1 = "select count(*) from accountbook";
int totalCount = jdbcTemplate.queryForInt(sql1);
page.setTotalCount(totalCount);
if (page.isPageSizeSetted()) {
//分页的重点,用limit来做
sql.append(" limit " + (page.getPageNo() - 1) * page.getPageSize() + "," + page.getPageSize());
}
try {
logger.info("" + sql.toString());
List<AccountBook> accountBooks = jdbcTemplate.query(sql.toString(), new RowMapper<AccountBook>(){
public AccountBook mapRow(ResultSet rs, int rowNum)
throws SQLException {
// TODO Auto-generated method stub
AccountBook accountBook = new AccountBook();
accountBook.setAccountId(rs.getInt("accountId"));
accountBook.setCostMany(rs.getLong("costMany"));
return accountBook;
}
});
page.setResult(accountBooks);
logger.info("获取记录成功");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
logger.error("获取记录失败", e);
return null;
}
return page;
}
--------------------------------------------------------------------------------------------
public Page<AccountBook> findAll(Page<AccountBook> page){
return accountBookDao.findAll(page);
}
--------------------------------------------------------------------------------------------
public String list(HttpServletRequest request,Page<AccountBook> page){
page = accountBookManager.findAll(page);
for (AccountBook accountBook : page.getResult()) {
logger.info("---"+accountBook.getCostMany());
}
request.setAttribute("page", page);
request.setAttribute("pageInfo", PageInfo.getAdminPagingNavigation(page));
return "/paging/page";
}
--------------------------------------------------------------------------------------------