Page分页和封装page页面

本文深入探讨了如何使用分页技术有效地管理大量数据,通过构造Page类来实现数据分页,包括计算总页数、起始位置、JSP页面的起始和结束页码以及数据列表的封装。
//封装页面数据
public class Page {
 
 private int totalrecord;  //总纪录数
 private int pagesize = 3;  //每页多少条数据
 private int totalpage;
 
 private int pagenum; //用户想哪一页
 private int startindex;  //根据用户想看的页,算出该页在数据库的起始位置
 
 private int startpage;  //jsp页面的起始页码
 private int endpage;    //jsp页面的结束页码
 
 private List list;   //保存页面数据 ,这里假如显示的是Book所有的记录,list里面封装的的是很多book数据。相当于getALLBook();
 
 
 public Page(int pagenum,int totalrecord){
  this.totalrecord = totalrecord;
  this.pagenum = pagenum;
  
  //构造函数根据用户传递进来的总纪录数和页号,算出总页数,和该页在数据库的起始位置
  //1.算出总页数
  if(this.totalrecord%this.pagesize==0){
   this.totalpage = this.totalrecord/this.pagesize;
  }else{
   this.totalpage = this.totalrecord/this.pagesize + 1;
  }
  
  //2.算出页号在数据库的起始位置,不同数据库中不一样,mysql查询出来的结果是这个位置的下一个数据。从这个的下一个开始
  this.startindex = (this.pagenum-1)*this.pagesize;
  
  //3.算出jsp页面的起始页码和结束页码,小于10个,全显示,大于10个,只显示10个
  if(this.totalpage<=10){
   this.startpage = 1;
   this.endpage = this.totalpage;
  }else{  
   
   this.startpage = this.pagenum - 4;
   this.endpage = this.pagenum + 5;
   
   if(this.startpage<1){
    this.startpage = 1;
    this.endpage = 10;
   }
   if(this.endpage>this.totalpage){
    this.endpage = this.totalpage;
    this.startpage = this.totalpage-9;
   }
  }
 }
 
 public int getTotalrecord() {
  return totalrecord;
 }
 public void setTotalrecord(int totalrecord) {
  this.totalrecord = totalrecord;
 }
 public int getPagesize() {
  return pagesize;
 }
 public void setPagesize(int pagesize) {
  this.pagesize = pagesize;
 }
 public int getTotalpage() {
  return totalpage;
 }
 public void setTotalpage(int totalpage) {
  this.totalpage = totalpage;
 }
 public int getPagenum() {
  return pagenum;
 }
 public void setPagenum(int pagenum) {
  this.pagenum = pagenum;
 }
 public int getStartindex() {
  return startindex;
 }
 public void setStartindex(int startindex) {
  this.startindex = startindex;
 }

 public int getStartpage() {
  return startpage;
 }

 public void setStartpage(int startpage) {
  this.startpage = startpage;
 }

 public int getEndpage() {
  return endpage;
 }

 public void setEndpage(int endpage) {
  this.endpage = endpage;
 }

 public List getList() {
  return list;
 }

 public void setList(List list) {
  this.list = list;
 }
 
 
}


 

package com.model; import javax.servlet.http.HttpServletRequest; import java.util.*; /** * 说明:参数封装Map * @version */ public class PageData extends HashMap implements Map{ private static final long serialVersionUID = 1L; Map map = null; HttpServletRequest request; public PageData(HttpServletRequest request){ this.request = request; Map properties = request.getParameterMap(); Map returnMap = new HashMap(); Iterator entries = properties.entrySet().iterator(); Entry entry; String name = ""; String value = ""; while (entries.hasNext()) { entry = (Entry) entries.next(); name = (String) entry.getKey(); Object valueObj = entry.getValue(); if(null == valueObj){ value = ""; }else if(valueObj instanceof String[]){ String[] values = (String[])valueObj; for(int i=0;i<values.length;i++){ value = values[i] + ","; } value = value.substring(0, value.length()-1); }else{ value = valueObj.toString(); } returnMap.put(name, value); } map = returnMap; } public PageData() { map = new HashMap(); } @Override public Object get(Object key) { Object obj = null; if(map.get(key) instanceof Object[]) { Object[] arr = (Object[])map.get(key); obj = request == null ? arr:(request.getParameter((String)key) == null ? arr:arr[0]); } else { obj = map.get(key); } return obj; } public static boolean hasVal(PageData pd,String key){ return pd!=null&&pd;.containsKey(key)&&!pd.getString(key).isEmpty(); } public String getString(Object key) { return (String)get(key); } public Integer getInt(Object key) { return Integer.parseInt(getString(key)); } @SuppressWarnings("unchecked") @Override public Object put(Object key, Object value) { return map.put(key, value); } @Override public Object remove(Object key) { return map.remove(key); } public void clear() { map.clear(); } public boolean containsKey(Object key) { // TODO Auto-generated method stub
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值