主要分页实体类 package com.web.util.page; public class PageBean { private int count = 0; private int pageSize = 10; private int pageCount = 0; private int page = 1; private String totalCountSQL; private String listSQL; private String url;//改造新增 private String condition; //查询条件 private PageBean() {} //注意,这里没有final private static PageBean single; //只实例化一次 static{ single = new PageBean(); } //静态工厂方法 public synchronized static PageBean getInstance() { if (single == null) { single = new PageBean(); } return single; } public int getCount() { return count; } public void setCount(int count) { if (pageSize != 0) { pageCount = count / pageSize; if (count % pageSize != 0) { pageCount++; } } this.count = count; } public String getListSQL() { return listSQL; } public void setListSQL(String listSQL) { this.listSQL = listSQL; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } 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 String getTotalCountSQL() { return totalCountSQL; } public void setTotalCountSQL(String totalCountSQL) { this.totalCountSQL = totalCountSQL; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getCondition() { return condition; } public void setCondition(String condition) { this.condition = condition; } } 分页处理类及其接口 package com.web.util.page.imp; import java.io.Serializable; import java.util.List; import com.web.util.page.PageBean; public interface PaginateInterface extends Serializable { public List getList(PageBean page); public String getToolsMenu(PageBean page); public Long getTotalCount(PageBean p, String str[], Object ob2[]) throws Exception; public Long getTotalCount(PageBean page) throws Exception; public List getList(PageBean page, String str[], Object ob2[]) throws Exception; } package com.web.util.page; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.web.util.page.imp.PaginateInterface; public class Paginate extends HibernateDaoSupport implements PaginateInterface { /** * 显示用的分页信息 */ public String getToolsMenu(PageBean p) { String condition=""; String pcondition=""; if(p.getCondition()!=null && !"".equals(p.getCondition())){ condition=p.getCondition(); pcondition="&"+p.getCondition(); } StringBuffer str = new StringBuffer(""); int next, prev; prev = p.getPage() - 1; next = p.getPage() + 1; str.append("<mce:script language='JavaScript'><!-- /n");//原来必须页面嵌套form才能分页,现在采用脚步取值和超链接的方式 str.append("function pageGo(){/n"); //str.append("alert('in');/n"); str.append("var pageid=window.document.all.jumpPage.value;/n"); str.append("var pagesz=window.document.all.pageSize.value;/n"); // str.append("alert(pageid);/n"); if("".equals(p.getCondition())){ str.append("window.location=/"").append(p.getUrl()).append("?jumpPage=/"+pageid+"); }else{ str.append("window.location=/"").append(p.getUrl()).append("?").append(p.getCondition()).append("&jumpPage=/"+pageid+"); } str.append("/"&pageSize=/"+pagesz;/n"); str.append("}/n // --></mce:script>/n"); if (p.getPage() > 1) { str.append("<a href="/" mce_href="/"""+p.getUrl()+"?jumpPage=1&pageSize="+p.getPageSize()+""+pcondition+"/">首页 </a>-"); } else { str.append("首页 -"); } if (p.getPage() > 1) { str.append("<a href="/" mce_href="/"""+p.getUrl()+"?jumpPage="+prev+"&pageSize="+p.getPageSize()+""+pcondition+"/"> 上页 </a>-"); } else { str.append(" 上页 -"); } if (p.getPage() < p.getPageCount()) { str.append("<a href="/" mce_href="/"""+p.getUrl()+"?jumpPage="+next+"&pageSize="+p.getPageSize()+""+pcondition+"/"> 下页 </a>-"); } else { str.append(" 下页 -"); } if (p.getPageCount() > 1 && p.getPage() != p.getPageCount()) { str.append("<a href="/" mce_href="/"""+p.getUrl()+"?jumpPage="+p.getPageCount() +"&pageSize="+p.getPageSize()+""+pcondition+"/"> 末页</a>"); } else { str.append(" 末页 "); } str.append(" 【共<b class='font-red'>" + p.getCount() + "</b>条记录】"); str .append(" 每页<SELECT size=1 name=pagesize οnchange='document.all.jumpPage.value=1;document.all.pageSize.value=this.value;javascript:pageGo()'>"); if (p.getPageSize() == 3) { str.append("<OPTION value=3 selected>3</OPTION>"); } else { str.append("<OPTION value=3>3</OPTION>"); } if (p.getPageSize() == 10) { str.append("<OPTION value=10 selected>10</OPTION>"); } else { str.append("<OPTION value=10>10</OPTION>"); } if (p.getPageSize() == 20) { str.append("<OPTION value=20 selected>20</OPTION>"); } else { str.append("<OPTION value=20>20</OPTION>"); } if (p.getPageSize() == 50) { str.append("<OPTION value=50 selected>50</OPTION>"); } else { str.append("<OPTION value=50>50</OPTION>"); } if (p.getPageSize() == 100) { str.append("<OPTION value=100 selected>100</OPTION>"); } else { str.append("<OPTION value=100>100</OPTION>"); } str.append("</SELECT>"); str.append("条 共<b class='font-red'>" + p.getPageCount() + "</b>页 转到"); str .append("<SELECT size=1 name=Pagelist οnchange='document.all.jumpPage.value=this.value;javascript:pageGo();'>"); for (int i = 1; i < p.getPageCount() + 1; i++) { if (i == p.getPage()) { str.append("<OPTION value=" + i + " selected>" + i + "</OPTION>"); } else { str.append("<OPTION value=" + i + ">" + i + "</OPTION>"); } } str.append("</SELECT>页"); str.append("<INPUT type=hidden value=1 name=/"jumpPage/" > "); //新增参数 str.append("<INPUT type=hidden value=" + p.getPage() + " name=/"pages/" > "); str.append("<INPUT type=hidden value=" + p.getPageSize() + " name=/"pageSize/"> "); return str.toString(); } /** * 获取总条数 */ public Long getTotalCount(PageBean p) throws Exception { List list = getHibernateTemplate().find(p.getTotalCountSQL()); Long count = new Long('0'); if (list.size() > 0) { count = new Long(""+list.get(0)); } return count; } /** * 查询信息进行分页 */ public List getList(final PageBean p) { return this.getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session){ Query q = session.createQuery(p.getListSQL()); q.setFirstResult((p.getPage() - 1) * p.getPageSize()); q.setMaxResults(p.getPageSize()); return q.list(); } }); } /** * 查询信息进行分页 带有参数的 */ public List getList(final PageBean p,final String str[], final Object ob2[]) { return this.getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session){ Query q = session.createQuery(p.getListSQL()); if(str!=null){ for (int i = 0; i < str.length; i++) { q.setParameter(str[i], ob2[i]); } } q.setFirstResult((p.getPage() - 1) * p.getPageSize()); q.setMaxResults(p.getPageSize()); return q.list(); } }); } /** * 获取总条数 带有参数的 */ public Long getTotalCount(PageBean p, String str[], Object ob2[])throws Exception { List list=new ArrayList(); if(str!=null && str.length>0){ list = getHibernateTemplate().findByNamedParam(p.getTotalCountSQL(), str, ob2); }else{ list=this.getHibernateTemplate().find(p.getTotalCountSQL()); } Long count = new Long('0'); if (list.size() > 0) { count = (Long)list.get(0); } return count; } } Bo层分页类 package com.web.util.page; import java.util.List; public class Page { private List fieldslist; // 分页返回对象列表 private String pageSize; //每页显示的条数 private String jumpPage; //当前页码 private String totalNum; //所有记录数 private String totallPage; //总页数 private String styleClass; //样式 private String theme; //主题 private String url; //action路径 private String urlType; //路径的类型,用于以后路径的重写扩展 private String pageInfo; //分页的内容 private Page() {} //注意,这里没有final private static Page single; //只实例化一次 static{ single = new Page(); } //静态工厂方法 public synchronized static Page getInstance() { if (single == null) { single = new Page(); } return single; } public List getFieldslist() { return fieldslist; } public void setFieldslist(List fieldslist) { this.fieldslist = fieldslist; } public String getPageSize() { return pageSize; } public void setPageSize(String pageSize) { this.pageSize = pageSize; } public String getJumpPage() { return jumpPage; } public void setJumpPage(String jumpPage) { this.jumpPage = jumpPage; } public String getTotalNum() { return totalNum; } public void setTotalNum(String totalNum) { this.totalNum = totalNum; } public String getTotallPage() { return totallPage; } public void setTotallPage(String totallPage) { this.totallPage = totallPage; } public String getStyleClass() { return styleClass; } public void setStyleClass(String styleClass) { this.styleClass = styleClass; } public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUrlType() { return urlType; } public void setUrlType(String urlType) { this.urlType = urlType; } public String getPageInfo() { return pageInfo; } public void setPageInfo(String pageInfo) { this.pageInfo = pageInfo; } } struts action处理 pagebean=PageBean.getInstance(); page=Page.getInstance(); if (jumpPage != null && !"".equals(jumpPage) && pageSize != null && !"".equals(pageSize)) { pagebean.setPageSize(Integer.parseInt(pageSize));//如果传入新的每页页数,则封装 } else { jumpPage = "1"; } String strSqlCnt="select count(*) from ColumnInfo where columnId='"+columnId+"'"; String strSqlInfo="from ColumnInfo where columnId='"+columnId+"' order by id desc"; pagebean.setUrl(path+"/web/morecolumnInfo.action"); pagebean.setCondition("columnId="+columnId+"&id="+choosekey); //查询条件 pagebean.setTotalCountSQL(strSqlCnt); pagebean.setPage(Integer.parseInt(jumpPage)); pagebean.setCount(this.pageinate.getTotalCount(pagebean).intValue()); pagebean.setListSQL(strSqlInfo); page.setPageInfo(this.pageinate.getToolsMenu(pagebean)); page.setFieldslist(this.pageinate.getList(pagebean)); 页面调用 此处为J2EE5.0开发环境 下例为一个分页发布信息的样式 <ul class="list-s1"> <s:iterator value="page.fieldslist"> <li> <a href="<%=basePath%>web/webcolinfoview.action?id=${id}&choosekey=${choosekey}" target="_bank" ><s:property value="title" /></a> </li> </s:iterator> </ul> <p class="paging">${page.pageInfo}</p> </div> 效果如下