Java-页面分页效果

分页模板

1、首先建立一个工具包msq.utils

    新建两个类

    NavigationTag.java

package msq.utils;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
 * 显示格式:首页 上一页 1 2 3 4 5下一页 尾页
 */
public class NavigationTag extends TagSupport {
	static final long serialVersionUID = 2372405317744358833L;
	private String bean = "page";//request 中用于保存Page 对象的变量名,默认为“page”
	private String url = null;//分页跳转的url地址,此属性必须
	private int number = 5;//显示页码数量	
	
	private int goPage = 1;//显示要跳转到的页码
	@Override
	public int doStartTag() throws JspException {		
		JspWriter writer = pageContext.getOut();
		
		HttpServletRequest request =(HttpServletRequest) pageContext.getRequest();		
		Page page = (Page) request.getAttribute(bean);
		if (page == null)return SKIP_BODY;
		url = resolveUrl(url, pageContext);		
		try {	       
			// 计算总页数
			int pageCount = page.getTotalRecordCount() / page.getPageSize();
			if (page.getTotalRecordCount() % page.getPageSize() > 0) {
				pageCount++;
			}
			writer.print("");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return SKIP_BODY;
	}

	private String append(String url, String key, int value) {
		return append(url, key, String.valueOf(value));
	}
	/**
	 * 为url 添加参数对儿
	 */
	private String append(String url, String key, String value) {		
		if (url == null || url.trim().length() == 0) {
			return "";
		}
		if (url.indexOf("?") == -1) {
			url = url + "?" + key + "=" + value;
		} else {
			if (url.endsWith("?")) {
				url = url + key + "=" + value;
			} else {
				url = url + "&" + key + "=" + value;
			}
		}
		return url;
	}
	/**
	 * 为url 添加翻页请求参数
	 */
	private String resolveUrl(String url, 
        javax.servlet.jsp.PageContext pageContext) throws JspException {		
		Map params = pageContext.getRequest().getParameterMap();
		for (Object key : params.keySet()) {
			if ("currentPage".equals(key) || "pageSize".equals(key)){
				continue;
			}
			Object value = params.get(key);
			if (value == null){
				continue;
			}
			if (value.getClass().isArray()) {
				url = append(url, key.toString(), ((String[]) value)[0]);
			} else if (value instanceof String) {
				url = append(url, key.toString(), value.toString());
			}
		}
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public void setNumber(int number) {
		this.number = number;
	}
}    

   Page.java

package msq.utils;

import java.util.List;

public class Page {		
	private Integer totalRecordCount;//总记录数
	private Integer pageSize;//一页几条记录
	private Integer currentPage;	//当前页号
	private List list;//当前页的记录list,传递给页面
	
	public Integer getTotalRecordCount() {
		return totalRecordCount;
	}
	public void setTotalRecordCount(Integer total) {
		this.totalRecordCount = total;
	}
	public Integer getPageSize() {
		return pageSize;
	}
	public void setPageSize(Integer size) {
		this.pageSize = size;
	}
	public Integer getCurrentPage() {
		return currentPage;
	}
	public void setCurrentPage(Integer page) {
		this.currentPage = page;
	}
	public List getList() {
		return list;
	}
	public void setList(List rows) {
		this.list = rows;
	}
	
	

}

2、在工程的WebRoot/WEB-INF下新建标签文件tle

    新建标签commons.tld




 
 1.0
 
 1.2
 
 common
 
 http://www.nynu.edu.cn/page
 
 Common Tag
 
 Common Tag library
 
 
  
  page
  
  msq.utils.NavigationTag
  
  JSP
  
  create navigation for paging
  
  
   
   url
   
   true
   
   true
  
  
   number
   true
  
 

3、在需要加分页效果的页面前加标签注解

<%@ taglib prefix="mypage" uri="http://www.nynu.edu.cn/page" %>

4、在合适的位置放上分页效果图

url="与后台连接到页面地址"  

5、新建一个类CustomPo,当前类继承CustomPo类

package msq.po;

public class CustomPo {
   Integer start;
   Integer pageSize;
public Integer getStart() {
	return start;
}
public void setStart(Integer start) {
	this.start = start;
}
public Integer getPageSize() {
	return pageSize;
}
public void setPageSize(Integer pageSize) {
	this.pageSize = pageSize;
}
   
   
}

6、在后台的查找类中依次加上两个参数

 controller包

@RequestParam(name="currentPage",defaultValue="1")Integer currentPage,//起始页
@RequestParam(name="PageSize",defaultValue="10")Integer PageSize,//页大小

将原先用来储存数据的List 改成 Page

在查询的基础上分页只需要再加一个参数即可

7、更改对应的sql语句 ,加上限制条件


    
      
         limit #{start},#{pageSize}
      
    

 

最后效果

你可能感兴趣的:(Java)