java 分页插件_java 实现分页插件

本文介绍了Java中实现分页功能的相关接口和类。`IPageList`接口定义了分页的基本操作,如获取总记录数、当前页码、每页大小等。`PageList`类实现了该接口,提供了具体的分页逻辑和数据存储。此外,`PageListUtil`工具类提供了创建分页对象和计算分页起始位置的方法。在实际应用中,这些组件用于构建动态的分页链接和展示分页导航。
摘要由CSDN通过智能技术生成

package com.levelcoder.paging;

/**

*

* 描述:分页接口

*

* 作者: LevelCoder

*

* 日期:2016年12月13日 下午1:49:01

*

* 版本: 1.0

*/

public interface IPageList {

/**

* 计算总记录数

*

* @return

*/

public int getItemCount();

/**

* 获取当前页码

* @return

*/

public int getPageIndex();

/**

* 每页显示的记录数量

*

* @return

*/

public int getPageSize();

/**

* 计算总页数.

*

* @return

*/

public int getPageCount();

/**

* 获取是否有上一页

* @return

*/

public boolean getHasPre();

/**

* 获取是否有下一页

* @return

*/

public boolean getHasNext();

public String resolveUrl(String url, String queryString, Integer pageNo, Integer pageSize);

}

package com.levelcoder.paging;

import java.util.List;

/**

*

* 描述:分页类实现

*

* 作者: LevelCoder

*

* 日期:2016年12月13日 下午1:49:10

*

* 版本: 1.0

*/

public class PageList implements IPageList{

/**

* 总记录数

*/

private int itemCount;

/**

* 当前页码

*/

private int pageIndex;

/**

* 每页显示记录数

*/

private int pageSize;

/**

* 总页数

*/

private int pageCount;

/**

* 是否首页

*/

private boolean hasPre;

/**

* 是否尾页

*/

private boolean hasNext;

/**

* 数据内容

*/

private List items;

public PageList(int itemCount, int pageIndex, int pageSize, List items) {

this.itemCount = itemCount;

this.pageSize = pageSize;

this.pageCount=(itemCount % pageSize == 0) ? itemCount/pageSize :itemCount/pageSize+1;

this.pageIndex=pageIndex>pageCount?pageCount:pageIndex;

this.hasPre=pageIndex>1;

this.hasNext=pageIndex

if (items != null)

this.items = items;

}

public int getItemCount() {

return this.itemCount;

}

public int getPageIndex(){

return this.pageIndex;

}

public int getPageSize() {

return this.pageSize;

}

public int getPageCount() {

return this.pageCount;

}

public boolean getHasPre(){

return this.hasPre;

}

public boolean getHasNext(){

return this.hasNext;

}

public List getItems(){

return this.items;

}

public String resolveUrl(String url, String queryString, Integer pageNo, Integer pageSize){

if(queryString==null)

queryString=new String();

else

queryString=queryString.replaceAll("&pageNo=\\d*", "").replaceAll("pageNo=\\d*", "").replaceAll("&pageSize=\\d*", "").replaceAll("pageSize=\\d*", "");

if(pageNo!=null)

queryString=queryString.isEmpty()?"pageNo="+pageNo.toString():queryString+"&pageNo="+pageNo.toString();

if(pageSize!=null)

queryString=queryString.isEmpty()?"pageSize="+pageSize.toString():queryString+"&pageSize="+pageSize.toString();

return queryString.isEmpty()?url:url+"?"+queryString;

}

}

package com.levelcoder.paging;

import java.util.List;

/**

*

* 描述:分页工具类

*

* 作者: LevelCoder

*

* 日期:2016年12月13日 下午1:49:21

*

* 版本: 1.0

*/

public class PageListUtil {

/**

* 默认的起始页

*/

public static final int DEFAULT_PAGE_NO=1;

/**

* 默认的分页显示数量

*/

public static final int DEFAULT_PAGE_SIZE=20;

public static final String PAGE_NO_NAME="pageNo";

public static final String PAGE_SIZE_NAME="pageSize";

/**

* 不关心总记录数

* @param pageNumber

* @param pageSize

* @return

*/

public static int getPageListStart(int pageNumber, int pageSize) {

return (pageNumber - 1) * pageSize;

}

/**

* 计算分页获取数据时游标的起始位置

* @param totalCount

* @param pageNumber

* @param pageSize

* @return

*/

public static int getPageListStart(int totalCount, int pageNumber, int pageSize) {

int start = (pageNumber - 1) * pageSize;

if (start >= totalCount)

start = 0;

return start;

}

/**

* 构造分页对象

* @param totalCount

* @param pageIndex

* @param items

* @param pageSize

* @return

*/

public static PageList getPageList(int totalCount, int pageIndex, List items, int pageSize) {

return new PageList(totalCount, pageIndex, pageSize, items);

}

}

import="com.levelcoder.paging.IPageList"

import="com.levelcoder.paging.PageListUtil"

import="org.apache.taglibs.standard.tag.common.core.UrlSupport"%>

String urlAddress=request.getParameter("urlAddress");

String pageModelName= request.getParameter("pageModelName");

Integer pageCount=(request.getParameter("pageCount")!=null&&!request.getParameter("pageCount").isEmpty())?Integer.valueOf(request.getParameter("pageCount")):10;

%>

if(pageModelName==null || pageModelName.isEmpty()){%>

未获取到分页标识!

else if(urlAddress==null || urlAddress.isEmpty()){%>

未获取到url地址!

else if(pageCount<10){%>

分页数量不能小于10!

IPageList> pageModel = (IPageList>)request.getAttribute(pageModelName);

if(pageModel==null){%>

未获取到分页内容!

else{%>

(每页显示条,共 条记录)

urlAddress = UrlSupport.resolveUrl(urlAddress, null, pageContext);

if (pageModel.getHasPre()) {

String preUrl = pageModel.resolveUrl(urlAddress, queryString, pageModel.getPageIndex() - 1, null);%>

上一页

else{%>

上一页

if(pageModel.getPageCount()<=pageCount){

for(int i=1;i<=pageModel.getPageCount();i++){

if(i==pageModel.getPageIndex()){%>

else{

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, i, null);%>

}

}

else{

for(int i=1;i<=pageCount;i++){

if(pageModel.getPageIndex()<=pageCount/2){

if(i==pageModel.getPageIndex()){%>

else if(pageCount-i>2){

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, i, null);%>

else if(i==pageCount-2){%>

...

else{

int pageNo=pageModel.getPageCount()-(pageCount-i);

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, pageNo, null);%>

}

else if(pageModel.getPageCount()-pageModel.getPageIndex()

if(i<3){

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, i, null);%>

else if(i==3){%>

...

else{

int pageNo=pageModel.getPageCount()-(pageCount-i);

if(pageNo==pageModel.getPageIndex()){%>

else{

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, pageNo, null);%>

}

}

else{

if(i<3){

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, i, null);%>

else if(i==3 || i==pageCount-2){%>

...

else if(i>pageCount-2){

int pageNo=pageModel.getPageCount()-(pageCount-i);

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, pageNo, null);%>

else{

if(pageCount%2==0)

{

if(i==pageCount/2){%>

else if(i

int pageNo=pageModel.getPageIndex()-(pageCount/2-i);

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, pageNo, null);%>

else{

int pageNo=pageModel.getPageIndex()+(i-pageCount/2);

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, pageNo, null);%>

}

else{

if(i==(pageCount+1)/2){%>

else if(i

int pageNo=pageModel.getPageIndex()-((pageCount+1)/2-i);

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, pageNo, null);%>

else{

int pageNo=pageModel.getPageIndex()+(i-(pageCount+1)/2);

String pageUrl = pageModel.resolveUrl(urlAddress, queryString, pageNo, null);%>

}

}

}

}

}

if (pageModel.getHasNext()) {

String nextUrl = pageModel.resolveUrl(urlAddress, queryString, pageModel.getPageIndex() + 1, null);%>

下一页

else{%>

下一页

测试写法

/**

* 用户列表

* @param model

* @return

* @throws Exception

*/

@RequestMapping(value="/list",method=RequestMethod.GET)

public String userList(Model model,HttpServletRequest request,UserVO user) throws Exception{

model.addAttribute("searchModel", user);

Map map = ConverterUtil.objectToMap(user);

List userList = userService.querList(map);

#主要实现分页接口调用

PageList pageList =PageListUtil.getPageList(10600, 1, userList, 20);

model.addAttribute("contentModel", pageList);

return "/user/list";

}

实现效果

69fd546c806c7896a10e817e50d5a56d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值