Struts Spring Hibernate通用分页

来源:百度文库 编辑:神马文学网 时间:2024/04/27 18:00:14
Struts+Spring+Hibernate通用分页程序
package com.myecsun.util.helper;
import org.hibernate.Query;
import java.util.List;
import org.hibernate.Criteria;
//读取一页数据的通用类
/**================================
===================================*/
public class Page {
private List results;
private int pageSize;
private int page;
public Page() {
}
public Page(Query query,int pageSize,int page){
this.page=page;
this.pageSize=pageSize;
results=query.setFirstResult((page-1)*pageSize).setMaxResults(pageSize).list();
}
public Page(Criteria crit,int pageSize,int page){
this.page=page;
this.pageSize=pageSize;
results=crit.setFirstResult((page-1)*pageSize).setMaxResults(pageSize).list();
}
public boolean isHaveNextPage(){
return results.size()>pageSize;
}
public boolean isHavePreviousPage(){
return page>0;
}
public List getResultsList(){
return isHaveNextPage()?results.subList(0,pageSize-1):results;
}
}
本类在DAO中的使用方法为:
public Page getPosts(int pageSize, int page) {
return new Page(this.getSession().getNamedQuery("getGroups"),pageSize,page);
}
传入的参数分别为:一页显示数据的条数和当前页号
编写标签辅助类:
package com.myecsun.util.helper;
import javax.servlet.http.HttpServletRequest;
public class PageHelper {
public PageHelper() {
}
public OldPage getPageInfo(HttpServletRequest request, int total) {
try {
OldPage page = new OldPage();
int pageSize = 25;
String pageno = request.getParameter("pageno");
String totalcount = request.getParameter("totalcount");
String totalpage = request.getParameter("totalpage");
page.setPagesize(pageSize);
if (pageno == null || totalcount == null || totalpage == null) {
page.setPageno(1);
page.setTotalcount(total);
if (total % pageSize == 0) {
page.setTotalpage(total / pageSize);
}
else {
page.setTotalpage(total / pageSize + 1);
}
}
else {
page.setPageno(Integer.parseInt(pageno));
page.setTotalcount(Integer.parseInt(totalcount));
page.setTotalpage(Integer.parseInt(totalpage));
}
return page;
}
catch (NumberFormatException ex) {
System.out.println("ex is :" + ex.toString());
return null;
}
}
}
在标签中使用标签辅助类:
package com.myecsun.util.helper;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
/**
*/
public class PageTag
extends SimpleTagSupport {
private OldPage page;
private String action = null;
//  private String nodeID;
public void setAction(String action) {
this.action = action;
}
public String getAction() {
return this.action;
}
public OldPage getPage() {
return this.page;
}
//  public String getNodeID() {
//    return nodeID;
//  }
public void setPage(OldPage page) {
this.page = page;
}
//  public void setNodeID(String nodeID) {
//    this.nodeID = nodeID;
//  }
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
int totalpage = page.getTotalpage();
int totalcount = page.getTotalcount();
int pageno = page.getPageno();
int addpageno = pageno + 1;
int minpageno = pageno - 1;
int pageStart;
int pageEnd;
if (pageno - 4 > 0) {
pageStart = pageno - 3;
if (totalpage > pageno + 4) {
pageEnd = pageno + 4;
}
else {
pageEnd = totalpage;
}
}
else if("".equals(pageno)) {
pageStart = 1;
if (totalpage > 8) {
pageEnd = 8;
}
else {
pageEnd = totalpage;
}
}else{
pageStart = 1;
if (totalpage > 8) {
pageEnd = 8;
}
else {
pageEnd = totalpage;
}
}
out.println(" ");
out.print("");
out.println("");
out.println("
共" + totalcount + "条," + totalpage + "页,当前是第"
+ pageno + "页
");
if (pageno > 1) {
out.println("+ "&pageno=1" + "&totalpage=" + totalpage + "&totalcount="
+ totalcount + "\">");
}
out.print("首页");
out.println("
");
if (pageno > 1) {
out.println("");
}
out.print("上页");
out.println("
");
//显示页数序列。Ex:1 2,3,4、、、、
for (int i = pageStart; i < pageEnd+1; i++) {
out.println("");
out.print("");
out.print(i);
out.print("
");
out.println("
");
}
if (pageno < totalpage) {
out.println("");
}
out.print("下页");
out.println("
");
if (pageno < totalpage) {
out.println("");
}
out.print("末页");
out.println("
");
out.println("
");
}
}
编写.tld描述文件:



1.0
MyTag

page
com.myecsun.util.helper.PageTag
empty

page
true
true


action
false
true


nodeID
false
true



在Action中使用:
int total = groupService.getCount();
int page = pageHelper.getPageInfo(request, total).getPageno();
int pageSize = pageHelper.getPageInfo(request, total).getPagesize();
FastArrayList groups=new FastArrayList(groupService.getPosts(pageSize,page).getResultsList()); request.setAttribute("groups",groups);
request.setAttribute("page", pageHelper.getPageInfo(request, total));
return mapping.findForward("queryGroup");
在web.xml中配置taglib:

/page
/WEB-INF/mytld/page.tld

在网页中加入标签:
<%@taglib uri="/page" prefix="page"%>
<%@page import="com.myecsun.util.helper.OldPage"%>
" action="queryAction.html?method=queryGroup"/>