读书人

java分页种

发布时间: 2012-09-23 10:28:10 作者: rapoo

java分页类
比较简单,耦合小。配置两个地方:
1、后台需要查询数据的地方调用Page.java的search(String query)方法(query参数是需要hibernate进行查询的hql语句,正常该怎么写还怎么写)。
2、需要显示记录的页面引入Page.jsp即可。

Page.java分页类

@Componentpublic class Page {private static HibernateTemplate hibernateTemplate;//每页显示的默认行数private int size = 15;//查询的开始行数private int start = 0;//当前显示的页数private int current = 1;//总行数private int rows = 0;//总页数private int pages = 0;public Page() {}@SuppressWarnings("static-access")@Resourcepublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}@SuppressWarnings("unchecked")public List search(Class cls, String query) {try {rows = count(query);pages = calcPages();setPage();setSession();return search(start, size, query);} catch (Exception e) {e.printStackTrace();return null;}}//设置当前页数,保证不会超出第一页和最后一页,//根据当前页数设置查询开始行private void setPage() {String parameter = getParameter("current");if (parameter == null) {return;}try {current = Integer.valueOf(parameter);} catch (Exception e) {}if (current <= 1) {current = 1;return;}if (current >= pages) {current = pages;}start = (current - 1) * size;}//设置每页显示多少行private int setSize() {try {return size = Integer.valueOf(getParameter("size").trim());} catch (Exception e) {return size;}}//总页数private int calcPages() {return (int)Math.ceil((float)rows/setSize());}private String getParameter(String name) {return Content.getRequest().getParameter(name);}//给页面传值private void setSession() {Content.setSessionAttribute("rows", rows);Content.setSessionAttribute("size", size);Content.setSessionAttribute("pages", pages);Content.setSessionAttribute("current", current);}//查询数据总行数private int count(String queryString)  throws Exception {return hibernateTemplate.find(queryString).size();}//查询指定开始行数到最大查询行数的记录@SuppressWarnings("unchecked")private List search(final int start, final int size, final String queryString) throws Exception {return hibernateTemplate.executeFind(new HibernateCallback() {public Object doInHibernate(Session s) throws HibernateException, SQLException {Query query = s.createQuery(queryString);query.setFirstResult(start);query.setMaxResults(size);return query.list();}});}}


Page.jsp显示分页信息的页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><table><tr><td>共${sessionScope.rows }行当前${sessionScope.current }/${sessionScope.pages }页<a href="javascript:go(1);">首页</a><a href="javascript:go(${sessionScope.current-1 });">上一页</a><a href="javascript:go(${sessionScope.current+1 });">下一页</a><a href="javascript:go(${sessionScope.pages });">尾页</a>每页显示<input type="text" maxlength="2" size="1" id="size" value="${sessionScope.size }">行转到<input type="text" maxlength="2" size="1" id="page"/>页<input type="button" onclick="go(page.value)" value="显示"></td></tr></table><script type="text/javascript">function go(page) {var size = document.getElementById("size").value;window.location.href = document.forms[0].action + "?current=" + page + "&size=" + size;}</script>


test.jsp需要引入分页的页面
<form action="safe_enterpriseManager.action"><%@include file="../../page/test.jsp" %></form>
1 楼 808_小星星 2012-03-06 这可是好东西啊,哈哈~~

读书人网 >编程

热点推荐