java(jsp)分页方法

摘要

java分页算法,从后台到前台jsp,包含整个过程。。

第一步:

先定义一个分页对象,也就是一个java bean

package com.wyf.common.web;

/**
 * 分页类
 * @author wgy
 *
 */
public class Page {

	/**
	 * 分页下标 即当前页 默认为第1页
	 */
	private int pageIndex = 1;
	/**
	 * 分页总数 即总共分多少页 默认为1页
	 */
	private int pageCount = 1;
	/**
	 * 分页大小 即每页显示记录条数 默认为5条
	 */
	private int pageSize = 5;
	/**
	 * 总的记录条数 即一共有多少条数据
	 */
	private int dataCount;
	/**
	 * 排序列字段名称
	 */
	private String orderByColumnName;
	/**
	 * 排序方式 默认为 "ASC" 升序
	 */
	private String orderByWay = "ASC";
	/**
	 * 排序方式常量 "DESC" 降序
	 */
	public static final String PAGE_ORDER_BY_DESC = "DESC";
	/**
	 * 排序方式常量 "ASC" 升序
	 */
	public static final String PAGE_ORDER_BY_ASC = "ASC";
	
	public int getPageIndex() {
		return pageIndex;
	}
	
	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}
	
	public int getPageCount() {
		return pageCount;
	}
	
	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
	
	public int getPageSize() {
		return pageSize;
	}
	
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	
	public int getDataCount() {
		return dataCount;
	}
	
	public void setDataCount(int dataCount) {
		this.dataCount = dataCount;
	}
	
	public String getOrderByColumnName() {
		return orderByColumnName;
	}
	
	public void setOrderByColumnName(String orderByColumnName) {
		this.orderByColumnName = orderByColumnName;
	}
	
	public String getOrderByWay() {
		return orderByWay;
	}
	
	public void setOrderByWay(String orderByWay) {
		this.orderByWay = orderByWay;
	}
	
}

第二步骤:

分页组件

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>分页页面</title>
    <script type="text/javascript">
  		function goToIndex(index){
  			var myQueryForm = document.getElementById("queryForm");//读取数据的action
  			var pageIndex = $("#pageIndex");
  			var pageCountValue = $("#pageCount").val();
  			switch(index){
  				case 0:
  					if(pageIndex.val() == 1){
  						alert("当前已经是第一页。");
  						return;
  					}else{
  						pageIndex.val("1");
  					}
  					break;
  				case -1:
  					if(pageIndex.val() == 1){
  						alert("当前已经是第一页。");
  						return;
  					}else{
  						pageIndex.val(parseInt(pageIndex.val())-1);
  					}
  					break;
  				case 1:
  					if(pageIndex.val() == pageCountValue){
  						alert("当前已经是最后一页。");
  						return;
  					}else{
  						pageIndex.val(parseInt(pageIndex.val())+1);
  					}
  					break;
  				case 2:
  					if(pageIndex.val() == pageCountValue){
  						alert("当前已经是最后一页。");
  						return;
  					}else{
  						pageIndex.val(pageCountValue);
  					}
  			}
  			myQueryForm.submit();
  		}
  	</script>
  </head>
  
  <body>
    <table align="center" width="100%">
    	<tr align="center">
			<td width="30%">共&nbsp;<s:property value="#request.pageBean.dataCount" />&nbsp;条数据</td>
    		<td width="50">&nbsp;<a href="#" onclick="goToIndex(0);return false;">首页</a>&nbsp;</td>
    		<td width="80">&nbsp;<a href="#" onclick="goToIndex(-1);return false;">上一页</a>&nbsp;</td>
    		<td width="80">&nbsp;<a href="#" onclick="goToIndex(1);return false;">下一页</a>&nbsp;</td>
    		<td width="50">&nbsp;<a href="#" onclick="goToIndex(2);return false;">尾页</a>&nbsp;</td>
    		<td width="30%">第&nbsp;<s:property value="#request.pageBean.pageIndex" />&nbsp;页/共&nbsp;<s:property value="#request.pageBean.pageCount" />&nbsp;页</td>
    	</tr>
    </table>
  </body>
</html>

页面提交的时候传入2个隐藏域

     <input type="hidden" id="pageIndex" name="pageBean.pageIndex" value="<s:property value="pageBean.pageIndex"/>"/>
     <input type="hidden" id="pageCount" name="pageBean.pageCount" value="<s:property value="pageBean.pageCount"/>"/>


后台分页算法:

	public List<T> queryDataWithPageBeanAndHql(Page pageBean,String hql){
		
		Session session = this.getSession();
		Query queryPage = session.createQuery(hql);
		
		List<T> list = null;
		if(pageBean == null){
			list = queryPage.list();
		}else{
			Query query = session.createQuery("select count(*) " + hql.substring(hql.indexOf("from")));
			//总的记录条数
			int count = ((Long)query.list().get(0)).intValue();
			//保存总的记录条数到PageBean中
			pageBean.setDataCount(count);
			pageBean.setPageCount((count-1)/pageBean.getPageSize() + 1);
			
			queryPage.setFirstResult((pageBean.getPageIndex()-1)*pageBean.getPageSize());
			queryPage.setMaxResults(pageBean.getPageSize());
			
			list=queryPage.list();
		}
		
		session.close();
		return list;
	}


IT家园
IT家园

网友最新评论 (0)