日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

java通用簡(jiǎn)單分頁(yè)

時(shí)間:2020-03-08 11:39:50 類型:JAVA
字號(hào):    

分頁(yè)可簡(jiǎn)單,可復(fù)雜,網(wǎng)上有好多,但是感覺(jué)都不太適合自己,所以,這里自己?jiǎn)为?dú)整理一個(gè)

package tool;

import javax.servlet.http.HttpServletRequest;

/**
 * 返回分頁(yè)字符串類
 * 
 * @author zhuangzi
 * @version 2020/03/08
 * 
 */
public class Pager {
	
	/**
	 * 生成簡(jiǎn)單的分頁(yè)字符串
	 * 
	 * @param total 總記錄數(shù)
	 * @param size 每頁(yè)記錄數(shù)
	 * @param step 最多顯示分頁(yè)頁(yè)數(shù)
	 * @param page 當(dāng)前頁(yè)數(shù)
	 * @param request 請(qǐng)求request
	 * @return 分頁(yè)的HTML代碼
	 */
	public static String getPages(int total, int size, int step, int page, HttpServletRequest request, String paramName) {
		// 根據(jù)request獲取當(dāng)前url,包括參數(shù),如果有已存在名稱未paramname的參數(shù),剔除掉,后面會(huì)追加新的參數(shù)
		String url = request.getContextPath() + request.getServletPath();
		String query = request.getQueryString();
		if (query != null) {
			String params = "";
			String[] querys = query.split("&");
			for (int i = 0 ; i < querys.length ; i ++) {
				if (querys[i].startsWith(paramName))
					continue;
				if (params.equals(""))
					params += querys[i];
				else
					params += "&" + querys[i];
			}
			if (!params.equals(""))
				url += "?" + params;
		}
		// 結(jié)果html
		String pages = "";
		String urls  = "";
		if (url.contains("?")) {
			urls = url + "&" + paramName;
		} else {
			urls = url + "?" + paramName;
		}

		int pageCount = (int) Math.ceil((double) total / size);// 求總頁(yè)數(shù)
		if (pageCount == 1) {
			return pages;
		}
		if (page > pageCount) {
			page = pageCount;// 如果分頁(yè)變量大總頁(yè)數(shù),則將分頁(yè)變量設(shè)計(jì)為總頁(yè)數(shù)
		}
		if (page <= 0) {
			page = 1;// 如果分頁(yè)變量小于1,則將分頁(yè)變量設(shè)為1
		}
		

		if(pageCount <= step){
			// 總頁(yè)數(shù) 小于 每頁(yè)顯示的數(shù)量時(shí), 全部顯示
			if(pageCount > 1){
				for (int i = 1; i <= pageCount; i++) {
					if (i != page) {
						pages = pages.concat("<a href='" + urls + "=" + i + "'>" + i + "</a>\n");
					} else {
						pages = pages.concat("<span class='current'>" + i + "</span>\n");
					}
				}
			}
		}
		else{
			// 顯示上一頁(yè)
			if (page > 1) {
				pages = pages.concat("<a class='prev' href='" + urls + "=" + (page - 1) + "'>上一頁(yè)</a>\n");
			} 

			// 顯示分頁(yè)碼
			int beginNum = 1; //起始位置
			int perNum = (int) Math.floor((double) step / 2); //每邊顯示的數(shù)目
			int endNums = pageCount; // 結(jié)束位置初始化為 總頁(yè)碼
			if(page <= perNum){ // 如果當(dāng)前頁(yè)小于等于 要顯示的一半的數(shù)目時(shí)
				beginNum = 1; // 起始位置
				endNums = step; // 結(jié)束位置
			}
			else if(page > perNum){
				if(page < pageCount - perNum) {
					 // 如果當(dāng)前頁(yè)大于等于 要顯示的一半的數(shù)目時(shí), 起始位置 直接 page - perNum;
					beginNum = page - perNum;  // 起始位置
					endNums  = page + perNum;  // 結(jié)束位置
				}
				else {
					beginNum = pageCount - step; //開(kāi)始位置
					endNums = pageCount; // 如果結(jié)束位置 大于 總頁(yè)碼
				}
			}
			

	        //顯示第1頁(yè)
			if (beginNum > 1) {
				if (url.contains("?")) {
					pages = pages.concat("<a href='" + url + "&" + paramName + "=1'>首頁(yè)</a> ... \n");
				} else {
					pages = pages.concat("<a href='" + url + "?" + paramName + "=1'>首頁(yè)</a> ... \n");
				}
			}
	        for (int i = beginNum; i <= endNums; i++) {
					if (i != page) {
						pages = pages.concat("<a href='" + urls + "=" + i + "'>" + i + "</a>\n");
					} else {
						pages = pages.concat("<span class='current'>" + i + "</span>\n");
					}
				}
	        //顯示最后1頁(yè)
		   if (endNums < pageCount) {
		   	     pages = pages.concat(" ... <a class='prev' href='" + urls + "=" +  pageCount + "'>尾頁(yè)</a>\n");
			}
			// 顯示下一頁(yè)
			if (page < pageCount) {
				pages = pages.concat("<a class='prev' href='" + urls + "=" + (page + 1) + "'>下一頁(yè)</a>\n");
			}
		}
		return pages;
	}
}

調(diào)用如下:

public String selectStudent(
			@RequestParam(defaultValue = "1") Integer page ,
			@RequestParam(defaultValue="2")  Integer pageSize,
			Student student, Model model,HttpServletRequest request) 
	{
		PageHelper.startPage(page,pageSize);//開(kāi)始分頁(yè)
		List<Student> lists = studentService.selectStudent(student);
		PageInfo<Student> pageInfo = new PageInfo<Student>(lists);//封裝分頁(yè)數(shù)據(jù)
		int total = (int) pageInfo.getTotal(); //總記錄數(shù)
		int size  = pageSize; //每頁(yè)記錄數(shù)
		int step  = 9;
		String pages = Pager.getPages(total, size, step, page, request, "page");
		model.addAttribute("pageInfo",pageInfo);
		model.addAttribute("pages",pages);
		return "studentlist";
	}

顯示效果如下:

1.jpg

下載源代碼:

Pager.zip


<