关闭

ssh项目中页面分页展现的处理

标签: 分页ssh
1760人阅读 评论(0) 收藏 举报
分类:

这几天一直在研究分页问题。看了别人的例子,自己总算是明白了,以前自己不知道去想怎么实现的,只想着去掉用,现在发现,只要用心,什么都能解决。一下是自己大概的总结,算是学习笔记吧,继续努力。

   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,5
		public int getStart(){
			    if(getCurrentPage()<this.getTotalPage()) return 1;
			return this.getCurrentPage()>this.getPageSize()?(this.getCurrentPage()-this.getPageSize()+1):1 ;
		}
		
		public int getEnd(){
			//开始位置+设置的pageSize-1
			return  (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.前台展现页面实现


展现效果如下图:



0
0
查看评论

基于SSH的分页查询实现

介绍:     分页查询很常用的一个功能,在SSH网上商城中用到了几次,在DRP中也出现了,就拉出来总结总结,其实套路都是一样的,要知道第几页、共多少页、每页多少条数据、一共多少数据,最后查询的时候需要两个参数begin和pagesize(从那条数据开始,查询几条),下面详细看一...
  • wxr15732623310
  • wxr15732623310
  • 2017-02-09 19:34
  • 1296

SSH项目实现分页功能

先上一个简单的效果图: 首先先建立一个实体类package com.entities;import java.util.List;public class PageBean<T> { private int currPage; //当前页数 private in...
  • ljh243581579
  • ljh243581579
  • 2017-01-13 00:13
  • 106

项目中的几个常用的分页存储过程

<br /><br /> Create PROCEDURE [dbo].[up_DataPager] <br />     @tblName varchar(255), -- 表名 <br />  ...
  • shaochao14
  • shaochao14
  • 2011-01-12 11:55
  • 790

项目中为什么使用SSH

1. 使用Struts:因为struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;第二,struts有着丰富的taglib,如能灵活运用,则能大大提高开发效率。 2. 使用Hibernate:因为hibernate为Java应用提供了一个易用的、高效率的对象关...
  • u011247211
  • u011247211
  • 2013-09-30 15:40
  • 1570

项目开发经验分享—分页查询

从今天开始,我将和大家分享一下最近经手项目的开发经验。今天我们分享的内容是:分页查询! 引言:     大家在浏览网页的时候,肯定遇到过这样的效果,一个滚动条套另一个滚动条,上下拉动,看着非常不方便,或是整个检索内容都在同一个页面,导致页面加载速度太慢,等半天都没有反应(如下图)...
  • small_baby01
  • small_baby01
  • 2015-01-31 16:33
  • 1802

asp.net mvc 分页的完整实现及源码下载

参考:http://www.2cto.com/kf/201110/107488.html http://www.2cto.com/kf/201110/107487.html 下载地址:http://download.csdn.net/detail/vaivxuanzi/4612120 //...
  • vaivxuanzi
  • vaivxuanzi
  • 2012-10-02 11:09
  • 1885

javaEE 初步实现分页

首先先实现基本的分页功能,下一篇博客再进行代码的抽取和优化 一: (1)先考虑我们界面需要显示的分页信息 有当前页、总页数、每页显示条数、总记录条数、页码开始索引、页码结束索引(默认索引显示10项) (2)然后声明一个PageBean对象对数据进行封装,定义相应的属性 ...
  • u013082989
  • u013082989
  • 2016-03-30 17:46
  • 2229

SSH内存泄露及Spring Quartz问题

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://www.blogbus.com/anoxia-logs/34360203.html 问题的起因: 为客户开发了一个系统权且称他为TM吧,用的是tomcat6+myelipse6+jdk1.6环境,框...
  • xiong_mao_1
  • xiong_mao_1
  • 2014-03-13 01:21
  • 814

javaweb - 介绍ssh框架的用途和在项目中的作用

1、Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景...
  • u014365133
  • u014365133
  • 2017-07-21 11:29
  • 203

Jsp页面简单分页处理

共${page.countrow }条记录 共${page.countpage }页 首页 上一页 5}"> =page.countpage-2}"...
  • Before_Morning
  • Before_Morning
  • 2015-04-08 21:25
  • 1137
    个人资料
    • 访问:87066次
    • 积分:1482
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:6篇
    • 译文:0篇
    • 评论:9条
    最新评论