ssh项目中页面分页展现的处理
来源:互联网 发布:知世故而不世故知乎 编辑:程序博客网 时间:2024/05/21 23:32
这几天一直在研究分页问题。看了别人的例子,自己总算是明白了,以前自己不知道去想怎么实现的,只想着去掉用,现在发现,只要用心,什么都能解决。一下是自己大概的总结,算是学习笔记吧,继续努力。
1.创建PageModel对象,即用来实现分页的javabean组件,代码如下:
import java.util.List;public class PageModel {private int total;//总记录数private int pageSize;//每页记录数private int currentPage;//当前页数private List<?> datas;//结果集private int totalPage;//总的页数 public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getCurrentPage() {return currentPage;}public void setCurrentPage(int currentPage) {this.currentPage = currentPage;}public int getTotal(){return total;}public void setTotal(int total){this.total = total;}public List<?> getDatas(){return datas;}public void setDatas(List<?> datas){this.datas = datas;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}// 获取第一页public int getFirstPage() {return 1;}// 获取最后下一页public int getLastPage() {return (total + pageSize - 1) / pageSize;}// 获取下一页public int getNextPage() {return (currentPage >= getLastPage() ? getLastPage() : currentPage + 1);}// 获取上一页public int getPreviousPage() {return currentPage <= 1 ? currentPage : (currentPage - 1);}public String toString() {return "PageModel:[currentPage:" + getCurrentPage() + ",pageSize"+ getPageSize() + ",listSize" + getDatas().size() + "]";}//获取开始的页数,在用到foreach的时候用到1,2,3,4,5public int getStart(){ if(getCurrentPage()<this.getTotalPage()) return 1;return this.getCurrentPage()>this.getPageSize()?(this.getCurrentPage()-this.getPageSize()+1):1 ;}public int getEnd(){//开始位置+设置的pageSize-1return (this.getStart()+this.getPageSize()-1)>this.getTotalPage()? this.getTotalPage():(this.getStart()+this.getPageSize()-1);}}
2.对应的分页方法封装在PagerDao里面,代码如下:
import java.util.List;import org.hibernate.Query;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class PagerDao extends HibernateDaoSupport { public PageModel getDatas(String hql,int offset,int pageSize){ String countHql = getCountQuery(hql);//为下面方法的调用,获取sql语句 Query query_number = this.getSession().createQuery(countHql); int total = ((Long)query_number.uniqueResult()).intValue();//总记录 Query query_datas = this.getSession().createQuery(hql); List<?> datas=null; if(offset==-1&&pageSize==-1){ datas = query_datas.list(); }else{ datas = query_datas.setFirstResult(offset).setMaxResults(pageSize).list();//生成list集合 } int totalPage = total % pageSize == 0 ? total/ pageSize : total / pageSize + 1; PageModel pm = new PageModel(); pm.setDatas(datas); pm.setTotal(total); //添加总的页面数 pm.setTotalPage(totalPage); return pm; } /** * 根据HQL语句生成对应的查询语句 * @param hql * @return */ private String getCountQuery(String hql){ System.out.println(hql); int index = hql.indexOf("from"); if(index!=1){ String s = "select count(*)"+hql.substring(index); return s; } throw new RuntimeException("无效的HQL查询语句!"); }}3.接下来时展现分页方法的实现,如下:
4.对应的action
public String show() throws Exception{HttpServletRequest request = ServletActionContext.getRequest();if (currentPage == 0) {currentPage = 1;} else {currentPage = Integer.parseInt(request.getParameter("currentPage"));}int offset =(currentPage-1)*pageSize;PageModel pageModel=this.bbsManager.showBBS(offset, pageSize);pageModel.setPageSize(4);//这两个人的作用是:前台取出数据时的分页pageModel.setCurrentPage(currentPage); request.setAttribute("bbsPm",pageModel);return "show_success";}
5.前台展现页面实现
展现效果如下图:
- ssh项目中页面分页展现的处理
- 项目中处理异常的错误页面
- SSH中分页的实现
- ios中UIImageView展现图片的不同处理方式
- ios中UIImageView展现图片的不同处理方式
- 关于页面展现的效率
- ssh分页处理
- SSH分页处理
- SSH框架分页处理
- SSH--分页处理
- Web项目中创建简单的错误处理页面
- SpringMVC+Maven+MyBatis项目JSP页面分页处理
- 对于用分页标签展现的报表中序号重置的解决办法
- ssh-hibernate中分页的展示
- Struct2或者SSH项目中,在JSP页面显示Action中注册的错误信息
- Struct2或者SSH项目中,在JSP页面显示Action中注册的错误信息
- [ssh]关于ssh中查询并分页方法的记录
- SSH中分页问题
- [转载]I2C总线协议详解
- Q
- 二叉树的遍历与青蛙跳台阶——利用递归的数据结构来理解递归过程
- iOS SDK中使用NSXMLParser解析XML
- 如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3
- ssh项目中页面分页展现的处理
- 拓扑排序
- fork()函数
- C++中位操作符
- 从影片中获取每一帧图片(包括第一帧)
- Trident spouts - Strom
- 一个算法,解决自动分配价格,望大家改进
- 九句良言胜敲十年代码
- java web开发学习-10 netbeans如何导入struts2插件