SSH 完美实现分页显示
来源:互联网 发布:淘宝情趣用品店排行 编辑:程序博客网 时间:2024/06/10 04:27
1、首先实现一个分页显示的基类
import java.sql.SQLException;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;//在hibernateDaoSupport基础上实现了分页public class MyHibernateDaoSupport extends HibernateDaoSupport{public List<?> findByPage(final String hql,final int offset,final int pageSize){List<?> list = getHibernateTemplate().executeFind(new HibernateCallback<Object>(){@Overridepublic Object doInHibernate(org.hibernate.Session session)throws HibernateException, SQLException{List<?> result = session.createQuery(hql).setFirstResult(offset).setMaxResults(pageSize).list();return result;}});return list;}public List<?> findByPage(final String hql,final Object value,final int offset,final int pageSize){List<?> list = getHibernateTemplate().executeFind(new HibernateCallback<Object>(){@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException{List<?> result = session.createQuery(hql).setParameter(0, value).setFirstResult(offset).setMaxResults(pageSize).list();return result;}});return list;}public List<?> findByPage(final String hql,final Object[] values,final int offset,final int pageSize){List<?> list = getHibernateTemplate().executeFind(new HibernateCallback<Object>(){@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException{Query query = session.createQuery(hql);for(int i = 0; i < values.length; i++){query.setParameter(i, values[i]);}List<?> result = query.setFirstResult(offset).setMaxResults(pageSize).list();return result;}});return list;}}
2、创建Dao组件,继承1中的基类,并实现分页显示方法
public class CardDaoHibernate extends MyHibernateDaoSupport implements CardDao{@SuppressWarnings("unchecked")@Overridepublic List<Card> findAllByPage(int pageNo, int pageSize){if(pageNo < 1)return null;int offset = (pageNo - 1) * pageSize;return (List<Card>) findByPage("from Card",offset,pageSize);}@SuppressWarnings("unchecked")@Overridepublic List<Card> findAll(){// TODO Auto-generated method stubreturn (List<Card>)getHibernateTemplate().find("from Card");}}
3、在service中实现分页显示,并获取总页数
public class ServiceImpl implements Service{public static final int PAGESIZE = 5;private CardDao cardDao;@Overridepublic int getCardPageCount() throws MyException{try{List<Card> list = cardDao.findAll();int count = list.size();return (count + PAGESIZE - 1) / PAGESIZE;}catch(Exception e){e.printStackTrace();throw new MyException;}}@Overridepublic List<Card> getCardByPage(int pageNo) throws MyException{try{return cardDao.findAllByPage(pageNo, PAGESIZE);}catch(Exception e){e.printStackTrace();throw new MyException;}}
4、分页显示的Action
@SuppressWarnings("serial")public class ShowCardListAction extends ActionSupport{private Service service;private String pageNumber;private int currentPage;private List<Card> cardList;public Service getService(){return service;}public void setService(Service service){this.service = service;}public String getPageNumber(){return pageNumber;}public void setPageNumber(String pageNumber){this.pageNumber = pageNumber;}public int getCurrentPage(){return currentPage;}public void setCurrentPage(int currentPage){this.currentPage = currentPage;}public List<Card> getCardList(){return cardList;}public void setCardList(List<Card> cardList){this.cardList = cardList;}@Overridepublic String execute() throws Exception{ActionContext ctx = ActionContext.getContext();int pageCount = service.getCardPageCount();if(pageCount < 1){ctx.put("tip", "没有记录");return ERROR;}int pageNo;//第一次查看,显示第一页if(getPageNumber() == null || getPageNumber().equals("")){pageNo = 1;}else{pageNo = Integer.parseInt(getPageNumber().trim());}if(pageNo < 1){pageNo = 1;}if(pageNo > pageCount){pageNo = pageCount;}//总页数信息ctx.put("pageCount", pageCount);//当前查看的页号setCurrentPage(pageNo);List<Card> list = service.getCardByPage(pageNo);setCardList(list);return SUCCESS;}
4、分页显示的页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="/CardManagerSystem/css/style.css" type="text/css"><title>校园卡管理系统</title></head><body><s:set name="page" value="currentPage"></s:set><s:set name="last" value="pageCount"></s:set><div id="body"><div class="content" align="center"><table width="600" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" class="ss" style="font-size: 16px;text-align: center"> <tr height="30px"><th bgcolor="#F7F7F7">卡号</th><th bgcolor="#F7F7F7">姓名</th></tr><s:iterator value="cardList" status="m"><tr height="30px"><td align="center" bgcolor="#F7F7F7"><s:property value="number"/></td><td align="center" bgcolor="#F7F7F7"><s:property value="name"/></td></tr></s:iterator></table><br><div align="center" style="font-size: 18px">当前页码 <s:property value="currentPage"/> 总页数 ${requestScope.pageCount} <a href="showCardList.action?pageNumber=1">第一页</a> <s:if test="#page>1"><a href="showCardList.action?pageNumber=${requestScope.currentPage - 1}">上一页</a> </s:if><s:if test="#page<#last"><a href="showCardList.action?pageNumber=${requestScope.currentPage + 1}">下一页</a> </s:if><a href="showCardList.action?pageNumber=${requestScope.pageCount}">最后页</a> </div></div></div></body></html>
- SSH 完美实现分页显示
- ssh实现分页显示
- SSH实现数据分页显示功能
- ssh 通过select实现分类显示商品及分页显示
- Oracle分页完美实现
- 实例:SSh结合Easyui实现Datagrid的分页显示
- 实例:SSh结合Easyui实现Datagrid的分页显示
- SSh结合Easyui实现Datagrid的分页显示
- SSh结合Easyui实现Datagrid的分页显示
- SSh结合Easyui实现Datagrid的分页显示
- SSh结合Easyui实现Datagrid的分页显示
- 实例:SSh结合Easyui实现Datagrid的分页显示
- 实例:SSh结合Easyui实现Datagrid的分页显示
- SSH分页技术实现
- SSH的分页实现
- SSH分页实现
- ssh实现查询分页
- SSH实现分页功能
- oracle表分区详解
- ASP.NET小细节总结
- VS2008LINK : fatal error LNK1000: Internal error during IncrBuildImage
- mybatis写mapper文件注意事项
- Flex 4.6获取屏幕的分辨率
- SSH 完美实现分页显示
- CSS3的圆角Border-radius
- Android有用代码收藏
- 项目管理心得:一个项目经理的个人体会、经验总结
- css3.0的线性渐变
- JEECG智能开发平台-项目选型最爱
- 正则表达式(五)------ 匹配模式
- textarea中的内容自动生成空格
- 禅道使用流程图解