日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于分页的处理

發布時間:2025/6/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于分页的处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

public class UserReportVo {
private String uid;
/**
* 分頁對象
*/
private Page<UserReportVo> page;

public Page<UserReportVo> getPage() {
return page;
}
public void setPage(Page<UserReportVo> page) {
this.page = page;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}

}

?

?

public class Page<T> {

protected int pageNo = 1; // 當前頁碼
protected int pageSize = Integer.valueOf(Global.getConfig("page.pageSize")); // 頁面大小,設置為“-1”表示不進行分頁(分頁無效)

protected long count;// 總記錄數,設置為“-1”表示不查詢總數

protected int first;// 首頁索引
protected int last;// 尾頁索引
protected int prev;// 上一頁索引
protected int next;// 下一頁索引

private boolean firstPage;//是否是第一頁
private boolean lastPage;//是否是最后一頁

protected int length = 8;// 顯示頁面長度
protected int slider = 1;// 前后顯示頁面長度

private List<T> list = new ArrayList<T>();

private String orderBy = ""; // 標準查詢有效, 實例: updatedate desc, name asc

protected String funcName = "page"; // 設置點擊頁碼調用的js函數名稱,默認為page,在一頁有多個分頁對象時使用。

protected String funcParam = ""; // 函數的附加參數,第三個參數值。

private String message = ""; // 設置提示消息,顯示在“共n條”之后

public Page() {
this.pageSize = -1;
}

/**
* 構造方法
* @param request 傳遞 repage 參數,來記住頁碼
* @param response 用于設置 Cookie,記住頁碼
*/
public Page(HttpServletRequest request, HttpServletResponse response){
this(request, response, -2);
}

/**
* 構造方法
* @param request 傳遞 repage 參數,來記住頁碼
* @param response 用于設置 Cookie,記住頁碼
* @param defaultPageSize 默認分頁大小,如果傳遞 -1 則為不分頁,返回所有數據
*/
public Page(HttpServletRequest request, HttpServletResponse response, int defaultPageSize){
// 設置頁碼參數(傳遞repage參數,來記住頁碼)
String no = request.getParameter("pageNo");
if (StringUtils.isNumeric(no)){
CookieUtils.setCookie(response, "pageNo", no);
this.setPageNo(Integer.parseInt(no));
}else if (request.getParameter("repage")!=null){
no = CookieUtils.getCookie(request, "pageNo");
if (StringUtils.isNumeric(no)){
this.setPageNo(Integer.parseInt(no));
}
}
// 設置頁面大小參數(傳遞repage參數,來記住頁碼大小)
String size = request.getParameter("pageSize");
if (StringUtils.isNumeric(size)){
CookieUtils.setCookie(response, "pageSize", size);
this.setPageSize(Integer.parseInt(size));
}else if (request.getParameter("repage")!=null){
no = CookieUtils.getCookie(request, "pageSize");
if (StringUtils.isNumeric(size)){
this.setPageSize(Integer.parseInt(size));
}
}else if (defaultPageSize != -2){
this.pageSize = defaultPageSize;
}
// 設置排序參數
String orderBy = request.getParameter("orderBy");
if (StringUtils.isNotBlank(orderBy)){
this.setOrderBy(orderBy);
}
}

/**
* 構造方法
* @param pageNo 當前頁碼
* @param pageSize 分頁大小
*/
public Page(int pageNo, int pageSize) {
this(pageNo, pageSize, 0);
}

/**
* 構造方法
* @param pageNo 當前頁碼
* @param pageSize 分頁大小
* @param count 數據條數
*/
public Page(int pageNo, int pageSize, long count) {
this(pageNo, pageSize, count, new ArrayList<T>());
}

/**
* 構造方法
* @param pageNo 當前頁碼
* @param pageSize 分頁大小
* @param count 數據條數
* @param list 本頁數據對象列表
*/
public Page(int pageNo, int pageSize, long count, List<T> list) {
this.setCount(count);
this.setPageNo(pageNo);
this.pageSize = pageSize;
this.list = list;
}

/**
* 初始化參數
*/
public void initialize(){

//1
this.first = 1;

this.last = (int)(count / (this.pageSize < 1 ? 20 : this.pageSize) + first - 1);

if (this.count % this.pageSize != 0 || this.last == 0) {
this.last++;
}

if (this.last < this.first) {
this.last = this.first;
}

if (this.pageNo <= 1) {
this.pageNo = this.first;
this.firstPage=true;
}

if (this.pageNo >= this.last) {
this.pageNo = this.last;
this.lastPage=true;
}

if (this.pageNo < this.last - 1) {
this.next = this.pageNo + 1;
} else {
this.next = this.last;
}

if (this.pageNo > 1) {
this.prev = this.pageNo - 1;
} else {
this.prev = this.first;
}

//2
if (this.pageNo < this.first) {// 如果當前頁小于首頁
this.pageNo = this.first;
}

if (this.pageNo > this.last) {// 如果當前頁大于尾頁
this.pageNo = this.last;
}

}

/**
* 默認輸出當前分頁標簽
* <div class="page">${page}</div>
*/
@Override
public String toString() {

StringBuilder sb = new StringBuilder();
sb.append("<div class=\"span5\" style=\"display: inline;\">");
long startIndex = (pageNo-1)*pageSize + 1;
long endIndex = pageNo*pageSize <=count? pageNo*pageSize:count;

sb.append("<div class=\"dataTables_info\">");
sb.append("<span >顯示第 "+startIndex+" 到第 "+ endIndex +" 條,總共 "+count+" 條</span>");
sb.append("<span >每頁顯示 <span class=\"btn-group dropup\">");
sb.append("<button type=\"button\" class=\"btn btn-default btn-outline dropdown-toggle\" data-toggle=\"dropdown\" aria-expanded=\"false\">");
sb.append("<span class=\"page-size\">"+pageSize+"</span> <span class=\"caret\"></span>");
sb.append("</button>");
sb.append("<ul class=\"dropdown-menu\" role=\"menu\">");
sb.append("<li class=\""+getSelected(pageSize,10)+ "\"><a href=\"javascript:"+funcName+"("+pageNo+",10,'"+funcParam+"');\">10</a></li>");
sb.append("<li class=\""+getSelected(pageSize,25)+ "\"><a href=\"javascript:"+funcName+"("+pageNo+",25,'"+funcParam+"');\">25</a></li>");
sb.append("<li class=\""+getSelected(pageSize,50)+ "\"><a href=\"javascript:"+funcName+"("+pageNo+",50,'"+funcParam+"');\">50</a></li>");
sb.append("<li class=\""+getSelected(pageSize,100)+ "\"><a href=\"javascript:"+funcName+"("+pageNo+",100,'"+funcParam+"');\">100</a></li>");
sb.append("</ul>");
sb.append("</span> 條記錄</span>");
sb.append("</div>");
sb.append("</div>");


sb.append("<div class=\"span7\" style=\"display: inline;\">");
sb.append("<div class=\"dataTables_paginate paging_bootstrap pagination\">");
sb.append("<ul class=\"pagination pagination-outline\">");
if (pageNo == first) {// 如果是首頁
sb.append("<li class=\"prev disabled\"><a href=\"javascript:\">首頁</a></li>\n");
sb.append("<li class=\"prev disabled\"><a href=\"javascript:\">上一頁</a></li>\n");
} else {
sb.append("<li class=\"prev\"><a href=\"javascript:\" οnclick=\""+funcName+"("+first+","+pageSize+",'"+funcParam+"');\">"
+ "首頁></a></li>\n");
sb.append("<li class=\"prev\"><a href=\"javascript:\" οnclick=\""+funcName+"("+prev+","+pageSize+",'"+funcParam+"');\">"
+ "上一頁</a></li>\n");
}

int begin = pageNo - (length / 2);

if (begin < first) {
begin = first;
}

int end = begin + length - 1;

if (end >= last) {
end = last;
begin = end - length + 1;
if (begin < first) {
begin = first;
}
}

if (begin > first) {
int i = 0;
for (i = first; i < first + slider && i < begin; i++) {
sb.append("<li><a href=\"javascript:\" οnclick=\""+funcName+"("+i+","+pageSize+",'"+funcParam+"');\">"
+ (i + 1 - first) + "</a></li>\n");
}
if (i < begin) {
sb.append("<li><a href=\"javascript:\">...</a></li>\n");
}
}

for (int i = begin; i <= end; i++) {
if (i == pageNo) {
sb.append("<li class=\"active\"><a href=\"javascript:\">" + (i + 1 - first)
+ "</a></li>\n");
} else {
sb.append("<li><a href=\"javascript:\" οnclick=\""+funcName+"("+i+","+pageSize+",'"+funcParam+"');\">"
+ (i + 1 - first) + "</a></li>\n");
}
}

if (last - end > slider) {
sb.append("<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n");
end = last - slider;
}

for (int i = end + 1; i <= last; i++) {
sb.append("<li><a href=\"javascript:\" οnclick=\""+funcName+"("+i+","+pageSize+",'"+funcParam+"');\">"
+ (i + 1 - first) + "</a></li>\n");
}

if (pageNo == last) {
sb.append("<li class=\"next disabled\"><a href=\"javascript:\">下一頁</a></li>\n");
sb.append("<li class=\"next disabled\"><a href=\"javascript:\">尾頁</a></li>\n");
} else {
sb.append("<li class=\"next\"><a href=\"javascript:\" οnclick=\""+funcName+"("+next+","+pageSize+",'"+funcParam+"');\">"
+ "下一頁</a></li>\n");
sb.append("<li class=\"next\"><a href=\"javascript:\" οnclick=\""+funcName+"("+last+","+pageSize+",'"+funcParam+"');\">"
+ "尾頁</a></li>\n");
}

sb.append("</ul>");
sb.append("</div>");
sb.append("</div>");
sb.append("</div>");
return sb.toString();
}

protected String getSelected(int pageNo, int selectedPageNo){
if(pageNo == selectedPageNo){
//return "selected";
return "active";
}else{
return "";
}

}
/**
* 獲取分頁HTML代碼
* @return
*/
public String getHtml(){
return toString();
}

/**
* 獲取設置總數
* @return
*/
public long getCount() {
return count;
}

/**
* 設置數據總數
* @param count
*/
public void setCount(long count) {
this.count = count;
if (pageSize >= count){
pageNo = 1;
}
}

/**
* 獲取當前頁碼
* @return
*/
public int getPageNo() {
return pageNo;
}

/**
* 設置當前頁碼
* @param pageNo
*/
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}

/**
* 獲取頁面大小
* @return
*/
public int getPageSize() {
return pageSize;
}

/**
* 設置頁面大小(最大500)
* @param pageSize
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize <= 0 ? 10 : pageSize;// > 500 ? 500 : pageSize;
}

/**
* 首頁索引
* @return
*/
@JsonIgnore
public int getFirst() {
return first;
}

/**
* 尾頁索引
* @return
*/
@JsonIgnore
public int getLast() {
return last;
}

/**
* 獲取頁面總數
* @return getLast();
*/
@JsonIgnore
public int getTotalPage() {
return getLast();
}

/**
* 是否為第一頁
* @return
*/
@JsonIgnore
public boolean isFirstPage() {
return firstPage;
}

/**
* 是否為最后一頁
* @return
*/
@JsonIgnore
public boolean isLastPage() {
return lastPage;
}

/**
* 上一頁索引值
* @return
*/
@JsonIgnore
public int getPrev() {
if (isFirstPage()) {
return pageNo;
} else {
return pageNo - 1;
}
}

/**
* 下一頁索引值
* @return
*/
@JsonIgnore
public int getNext() {
if (isLastPage()) {
return pageNo;
} else {
return pageNo + 1;
}
}

/**
* 獲取本頁數據對象列表
* @return List<T>
*/
public List<T> getList() {
return list;
}

/**
* 設置本頁數據對象列表
* @param list
*/
public Page<T> setList(List<T> list) {
this.list = list;
initialize();
return this;
}

/**
* 獲取查詢排序字符串
* @return
*/
@JsonIgnore
public String getOrderBy() {
// SQL過濾,防止注入
String reg = "(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|"
+ "(\\b(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute)\\b)";
Pattern sqlPattern = Pattern.compile(reg, Pattern.CASE_INSENSITIVE);
if (sqlPattern.matcher(orderBy).find()) {
return "";
}
return orderBy;
}

/**
* 設置查詢排序,標準查詢有效, 實例: updatedate desc, name asc
*/
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}

/**
* 獲取點擊頁碼調用的js函數名稱
* function ${page.funcName}(pageNo){location="${ctx}/list-${category.id}${urlSuffix}?pageNo="+i;}
* @return
*/
@JsonIgnore
public String getFuncName() {
return funcName;
}

/**
* 設置點擊頁碼調用的js函數名稱,默認為page,在一頁有多個分頁對象時使用。
* @param funcName 默認為page
*/
public void setFuncName(String funcName) {
this.funcName = funcName;
}

/**
* 獲取分頁函數的附加參數
* @return
*/
@JsonIgnore
public String getFuncParam() {
return funcParam;
}

/**
* 設置分頁函數的附加參數
* @return
*/
public void setFuncParam(String funcParam) {
this.funcParam = funcParam;
}

/**
* 設置提示消息,顯示在“共n條”之后
* @param message
*/
public void setMessage(String message) {
this.message = message;
}

/**
* 分頁是否有效
* @return this.pageSize==-1
*/
@JsonIgnore
public boolean isDisabled() {
return this.pageSize==-1;
}

/**
* 是否進行總數統計
* @return this.count==-1
*/
@JsonIgnore
public boolean isNotCount() {
return this.count==-1;
}

/**
* 獲取 Hibernate FirstResult
*/
public int getFirstResult(){
int firstResult = (getPageNo() - 1) * getPageSize();
if (firstResult >= getCount()) {
firstResult = 0;
}
return firstResult;
}
/**
* 獲取 Hibernate MaxResults
*/
public int getMaxResults(){
return getPageSize();
}
}

?

?

?

// 封裝查詢對象
UserReportVo userReportVo = new UserReportVo();
userReportVo.setUid(uid);
// 封裝分頁對象
Page<UserReportVo> page = new Page<UserReportVo>(pageNo,pageSize);
userReportVo.setPage(page);
List<UserReportVo> uVo =userService.getAllUserReportByUid(userReportVo);

轉載于:https://www.cnblogs.com/hwgok/p/6683541.html

總結

以上是生活随笔為你收集整理的关于分页的处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产综合久久 | 偷偷在线观看免费高清av | 激情欧美一区二区三区 | 人人揉人人 | 久久久久亚洲av无码专区体验 | 污污小说在线观看 | 天天操天天插天天射 | 日韩av免费网站 | 日韩少妇内射免费播放18禁裸乳 | 中文字幕在线播放一区二区 | 亚洲成人福利 | 暖暖日本在线视频 | 色综合加勒比 | 日韩精品视频在线播放 | 免费成人在线观看动漫 | 老牛嫩草二区三区观影体验 | 欧美天天性| 久久露脸国语精品国产 | а√天堂8资源中文在线 | 国产 第1190页 | 天天干夜夜怕 | 亚洲97在线 | 强行无套内谢大学生初次 | 在线免费看黄 | 精品黑人一区二区三区观看时间 | 一区二区三区日韩在线 | 青青草在线免费视频 | 91美女视频网站 | 色婷综合 | av网址免费观看 | 麻豆传媒视频入口 | 中国在线观看视频高清免费 | 免费网站在线观看人数在哪动漫 | 亚州精品国产精品乱码不99按摩 | 国产小视频在线播放 | 成人精品一区二区三区电影 | 久久国产免费看 | 色哟哟免费观看 | 亚洲精品国产精品国 | 精品国产av色一区二区深夜久久 | 久久久久人妻一区精品色 | 操网| 欧美在线视频网 | 日韩专区在线 | jizz在线观看| 国产精品污视频 | 国产伦精品一区二区三区视频黑人 | 国产色中色 | 成人av影视在线 | 宅男视频污 | 99ri在线| 男女www | 亚洲人精品 | 男人天堂网在线视频 | 波多野结衣不卡视频 | 成人av网站免费 | 一级片福利 | 四虎av| av观看国产 | 老外毛片| 国产成人超碰人人澡人人澡 | 日本一区二区三区视频在线 | 久久人人精 | 一区二区成人免费视频 | 国内自拍偷拍网 | 欧美高清成人 | 日韩精品欧美激情 | 欧美一区二区三区四区在线观看 | 欧美成人精品欧美一 | 日韩伊人 | 伊人焦久影院 | 欧美黄页网站 | 国产精品欧美性爱 | 中文字幕精品久久久久人妻红杏ⅰ | 日日夜夜伊人 | caoporn人人| 亚洲精品66| 大奶毛片 | 国产欧美久久一区二区三区 | 在线免费观看你懂的 | 日本视频一区二区 | 成人激情视频在线播放 | 欧美国产精品一区二区三区 | 欧美福利网址 | 91精品黄色| 男受被做哭激烈娇喘gv视频 | 日韩在线一区二区 | 污污视频免费观看 | 久久高清无码电影 | 欧美www在线观看 | 欧美性受xxxxx| 粗大挺进潘金莲身体在线播放 | 亚州福利| 久久久无码18禁高潮喷水 | 国语对白精彩对话 | 狠狠干综合 | 一区二区三区www污污污网站 | 国模叶桐尿喷337p人体 | 亚洲成年人网站在线观看 |