. 如何分页?
1.把pager-taglib.jar放到lib目录下(仅此足亦,完全没必要改web.xml什么的,还有官方war包中的东西都可以不要)
2.在Jsp页面嵌入<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %>
分页代码:
action中示范代码:
PageModel pm = empMgr.selectAllEmp(PageModel.getOffset(request), PageModel.getPageSize(request)) ;
request.setAttribute("pm", pm) ;
jsp示范代码:
........
........
//分页代码
<pg:pager url="employee.do" items="${pm.total}" maxPageItems = "5" maxIndexPages="10" export="currentPageNumber=pageNumber" >
<pg:param name="pageSize" value="5" />
<pg:first>
<a href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl}">上一页</a>
</pg:prev>
<pg:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber}">
<font color="red">${pageNumber }</font>
</c:when>
<c:otherwise>
<a href="${pageUrl}">${pageNumber }</a>
</c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="${pageUrl}">下一页</a>
</pg:next>
<pg:last>
<a href="${pageUrl}">尾页</a>
</pg:last>
</pg:pager>
/*************PageModule类的代码**************/
public class PageModel {
private List datas; //页面上要显示的数据
private int total; //总的条数,作用:总共有多少页
public List getDatas() {
return datas;
}
public void setDatas(List datas) {
this.datas = datas;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public static int getOffset(HttpServletRequest request) {
int offset = 0 ;
String strOffset = request.getParameter("pager.offset") ;
if (strOffset != null) {
offset = Integer.parseInt(strOffset) ;
}
return offset ;
}
public static int getPageSize(HttpServletRequest request) {
int pageSize = 5 ;
String strPageSize = request.getParameter("pageSize") ;
if (strPageSize != null) {
pageSize = Integer.parseInt(strPageSize) ;
}
return pageSize ;
}
}
/********************************************************************/
/*****************抽象分页*******仅供参考******************************/
/********************************************************************/
package com.oa.manager.impl;
import java.util.List;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.oa.PagerModel;
public class AbstractPagerManager extends HibernateDaoSupport {
public PagerModel searchPaginated(String hql,int offset, int pagesize) {
return this.searchPaginated(hql, null, offset, pagesize);
}
public PagerModel searchPaginated(String hql, Object obj, int offset, int pagesize) {
return this.searchPaginated(hql, new Object[]{obj}, offset, pagesize);
}
/**
* 根据Hql语言进行分页
* @param hql HQL语句
* @param params HQL语句的参数
* @param offset 从第几条记录开始查询
* @param pagesize 每页显示多少条
* @return
*/
@SuppressWarnings("unchecked")
public PagerModel searchPaginated(String hql,Object[] params, int offset, int pagesize) {
//获取总记录数
String countHql = this.getCountQuery(hql);
System.out.println("countHql: " + countHql);
Query query = this.getSession().createQuery(countHql);
if(query != null && params != null && params.length > 0) {
for(int i=0; i<params.length; i++) {
query.setParameter(i, params[i]);
}
}
int total = ((Long)query.uniqueResult()).intValue();
//获得当前页的结果集
query = this.getSession().createQuery(hql);
if(query != null && params != null && params.length > 0) {
for(int i=0; i<params.length; i++) {
query.setParameter(i, params[i]);
}
}
query.setFirstResult(offset);
query.setMaxResults(pagesize);
List<Organization> list = query.list();
PagerModel pm = new PagerModel();
pm.setTotal(total);
pm.setList(list);
return pm;
}
private String getCountQuery(String hql) {
System.out.println(hql);
int index = hql.indexOf("from");
System.out.println("index:" + index);
if(index != -1){
return "select count(*) " + hql.substring(index);
}
System.out.println("问题出了");
throw new RuntimeException("无效的HQL查询语句!");
}
}
分享到:
相关推荐
JAVA 分页组件 可重复利用 public List interceptListByStarItemNumber(List itemList)
基于GridView和ActivityGroup实现的Tab分页
PHP结合数据库,实现分页功能
一个开放源码的Asp.net分页控件,采取Url进行链接分页,支持页面跳转,利用DataGrid进行演示,当然也可以利用GridView等,MyPaper.cs为控件源码 该分页控件调用也非常简单,具体请参照Demo文件 Demo.aspx为演示页面...
mricode分页组件利用 Mricode.Pagination 来实现分页 到 github 下载 js 插件 https://github.com/mricle/pagination
利用jQuery实现表格的分页
ZK中利用paging组件, 结合MVC与MVVM两种模式,实现大量数据的动态分页。
采用了Angular-UI中的分页组件,关于Angular-UI如何使用请移步这里https://angular-ui.github.io/bootstrap/中的bootstrap章节(其中ui-router等我也建议你多看看) 注意:必须按照官网上引入相应的js和css才能生效...
前言 在上两章的工作中,我们顺利的实现了首页...事实上,我们自己构建一个分页组件也不是不可以,在移动端我都是自己的代码实现的.但是,我这里要推荐的是使用 laypage 这个分页插件,其官方网址是 (http://laypage.layui.
ember-impagination, 在异步分页的数据集中,一个that插件,它将 impagination 这是一个Ember的binding... 它可以利用微光的力量,并为你的组件提供快速渲染所需的数据。Impagination自述文件:无论使用哪种方式:无
基于Data Access Object(DAO)设计模式,利用抽象、接口、类反射技术设计和实现了可重用Java数据库操作组件。它封装了注册和载入JDBC驱动程序、建立数据库连接、运行Structured Query Language(SQL)语句及处理查询...
1、文件主要有vue文件,SpringBoot(IDEA编写),sql语句 2、没有登录功能,功能简单新手易看懂 3、主要做了增删改查、分页查询、分类查询的功能 4、目的是为:刚学完vue2.0或者SpringBoot的人提供学习资料
select2是一款jQuery插件,是普通form表单select组件的升级版。 接下来通过本文给大家介绍jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页),需要的的朋友参考下吧
ElementUI是饿了么前端开源的一个基于Vue的前端框架,已经帮我们封装好了一系列功能性的组件,比如栅格系统、表格、表单、树形菜单、通知等。对于搞后台管理界面的项目,特别是不需要考虑兼容ie8、ie9以下的项目、...
使用Android分页库进行分页和无限滚动。 处理网络状态和网络故障 ConstraintLayout(准则,障碍等) 材料设计。 :rocket: 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 ...
一个简单实用的Ajax表格组件,功能如下: * 是个裸体表格,样式完全开放,利用CSS自己定制。 * 提供增加,删除行的功能。 * 可分页导航,支持动态改变单页最大行数。 * 可页面排序(支持中文拼音排序)。 * 插件...
摘要:.NET源码,控件组件,分页控件 可视化分页控件,采取Url进行链接分页,支持页面跳转,利用DataGrid进行演示,当然也可以利用GridView等,MyPaper.cs为控件源码 该分页控件调用也非常简单,具体请参照Demo文件 ...
实例316 利用JavaScript+CSS实现分页打印 496 12.5 JavaScript安全机制的应用 498 实例317 用JavaScript屏蔽部分键盘按键 498 实例318 利用JavaScript屏蔽鼠标右键 499 实例319 利用JavaScript禁止复制网页内容 500...