[1]实例一:
1 首先新建一个PageModel类
public class PageModel {
/**
* 总记录数
*/
private int total;
/**
* 当前页的记录集
*/
private List datas;
setter,getter....
}
public class PageModel {
/**
* 总记录数
*/
private int total;
/**
* 当前页的记录集
*/
private List datas;
setter,getter....
}
2.底层的分页查询用的是Hibernate提供的分页查询.如下:
public interface PersonInfoDao {
/*
offset 从第几条记录开始查询
pagesize 每页显示多少条记录
*/
public PageModel queryAllPerson(int offset,int pagesize);
}
public interface PersonInfoDao {
/*
offset 从第几条记录开始查询
pagesize 每页显示多少条记录
*/
public PageModel queryAllPerson(int offset,int pagesize);
}
public class PersonInfoHibernateDao extends HibernateDaoSupport implements PersonInfoDao{
public PageModel queryAllPerson(int offset,int pagesize)
{
// 得到总记录数
String queryCountHql="select count(*) from PersonInfo";
Query query = getSession().createQuery(queryCountHql);
int total = ((Long)query.uniqueResult()).intValue();
List datas = getSession().createQuery("from PersonInfo").setFirstResult
public PageModel queryAllPerson(int offset,int pagesize)
{
// 得到总记录数
String queryCountHql="select count(*) from PersonInfo";
Query query = getSession().createQuery(queryCountHql);
int total = ((Long)query.uniqueResult()).intValue();
List datas = getSession().createQuery("from PersonInfo").setFirstResult
(offset).setMaxResults(pagesize).list();
PageModel pageModel=new PageModel();
pageModel.setTotal(total);
pageModel.setDatas(datas);
return pageModel;
}
}
PageModel pageModel=new PageModel();
pageModel.setTotal(total);
pageModel.setDatas(datas);
return pageModel;
}
}
//实际上,定义了上面的DAO,及其实现方法后,已经可以在ACTION中应用了.在server及其实际类中定义,纯属自己项目结构决定的
public interface PersonService {
public PageModel queryAllPerson(int offset,int pagesize);
}
public class PersonServiceImp implements PersonService{
private PersonInfoDao personInfoDao;
public PersonInfoDao getPersonInfoDao() {
return personInfoDao;
}
public void setPersonInfoDao(PersonInfoDao personInfoDao) {
this.personInfoDao = personInfoDao;
}
public PageModel queryAllPerson(int offset,int pagesize)
{
return this.getPersonInfoDao().queryAllPerson(offset, pagesize);
}
}
private PersonInfoDao personInfoDao;
public PersonInfoDao getPersonInfoDao() {
return personInfoDao;
}
public void setPersonInfoDao(PersonInfoDao personInfoDao) {
this.personInfoDao = personInfoDao;
}
public PageModel queryAllPerson(int offset,int pagesize)
{
return this.getPersonInfoDao().queryAllPerson(offset, pagesize);
}
}
struts.xml定义:
<package name="loginPackage" extends="jason-default">
<action name="jLogin" class="JLogin">
<result name="success" >/WEB-INF/jason/index.jsp</result>
<result name="error">/WEB-INF/jason/login.jsp</result>
<result name="input">/WEB-INF/jason/login.jsp</result>
<result name="search" type="freemarker">/WEB-
<package name="loginPackage" extends="jason-default">
<action name="jLogin" class="JLogin">
<result name="success" >/WEB-INF/jason/index.jsp</result>
<result name="error">/WEB-INF/jason/login.jsp</result>
<result name="input">/WEB-INF/jason/login.jsp</result>
<result name="search" type="freemarker">/WEB-
INF/templates/jsearch.ftl</result>
<result name="pagertaglib">/WEB-INF/jason/pagerTaglib.jsp</result>
<interceptor-ref name="jLoginStack"/>
</action>
</package>
<result name="pagertaglib">/WEB-INF/jason/pagerTaglib.jsp</result>
<interceptor-ref name="jLoginStack"/>
</action>
</package>
在ACTION中定义:
public String pagerTaglib()
{
int pagesize=3;
int offset=0;
HttpServletRequest request = ServletActionContext.getRequest();
// HttpServletResponse response = ServletActionContext.getResponse();
if(request.getParameter("pager.offset")!=null)
offset=Integer.parseInt(request.getParameter("pager.offset"));
PageModel pm=this.getPersonService().queryAllPerson(offset, pagesize);
request.setAttribute("pm", pm);
return "pagertaglib";
}
public String pagerTaglib()
{
int pagesize=3;
int offset=0;
HttpServletRequest request = ServletActionContext.getRequest();
// HttpServletResponse response = ServletActionContext.getResponse();
if(request.getParameter("pager.offset")!=null)
offset=Integer.parseInt(request.getParameter("pager.offset"));
PageModel pm=this.getPersonService().queryAllPerson(offset, pagesize);
request.setAttribute("pm", pm);
return "pagertaglib";
}
显示分页的JSP页面:
<%@ page language=
"java"
import=
"java.util.*" pageEncoding=
"utf-8"%>
<%@ taglib prefix= "c" uri= "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Jason test 分页</title>
</head>
<body>
<h1>Jason test 分页</h1>
<hr/>
<table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">
<tr bgcolor="#EFF3F7">
<TD align="center">ID</TD>
<TD align="center">名称</TD>
<TD align="center">密码</TD>
<TD align="center">相关操作</TD>
</tr>
<c:if test="${!empty pm.datas}">
<c:forEach items="${pm.datas}" var="person">
<tr bgcolor="#EFF3F7">
<td align="center">${person.id }</td>
<td align="center">${person.name }</td>
<td align="center">${person.password}</td>
<td align="center">
修改
删除</td>
</tr>
</c:forEach>
</c:if>
<c:if test="${empty pm.datas}">
<tr>
<td colspan="5" align="center" bgcolor="#EFF3F7">
没有找到相应的记录
</td>
</tr>
</c:if>
</table>
<pg:pager url="jLogin!pagerTaglib" items="${pm.total}" export="currentPageNumber=pageNumber">
<pg:first>
<a href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl }">上一页</a>
</pg:prev>
<pg:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber}">
<font color="red">${pageNumber }</font>
</c:when>
<c:otherwise>
<a href="${pageUrl }">${pageNumber }</a>
</c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="${pageUrl }">下一页</a>
</pg:next>
<pg:last>
<a href="${pageUrl }">尾页</a>
</pg:last>
</pg:pager>
</body>
</html>
<%@ taglib prefix= "c" uri= "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Jason test 分页</title>
</head>
<body>
<h1>Jason test 分页</h1>
<hr/>
<table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">
<tr bgcolor="#EFF3F7">
<TD align="center">ID</TD>
<TD align="center">名称</TD>
<TD align="center">密码</TD>
<TD align="center">相关操作</TD>
</tr>
<c:if test="${!empty pm.datas}">
<c:forEach items="${pm.datas}" var="person">
<tr bgcolor="#EFF3F7">
<td align="center">${person.id }</td>
<td align="center">${person.name }</td>
<td align="center">${person.password}</td>
<td align="center">
修改
删除</td>
</tr>
</c:forEach>
</c:if>
<c:if test="${empty pm.datas}">
<tr>
<td colspan="5" align="center" bgcolor="#EFF3F7">
没有找到相应的记录
</td>
</tr>
</c:if>
</table>
<pg:pager url="jLogin!pagerTaglib" items="${pm.total}" export="currentPageNumber=pageNumber">
<pg:first>
<a href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl }">上一页</a>
</pg:prev>
<pg:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber}">
<font color="red">${pageNumber }</font>
</c:when>
<c:otherwise>
<a href="${pageUrl }">${pageNumber }</a>
</c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="${pageUrl }">下一页</a>
</pg:next>
<pg:last>
<a href="${pageUrl }">尾页</a>
</pg:last>
</pg:pager>
</body>
</html>