package accp.hhs.util;
public class PageMoed {
private int currentIndex; //当前页
private int rowSize; //行大小
private int sunPage; //总页数
private int beginRow; //起始行
private int startIndex; //显示的页码
private String order; //排序
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
/**
* 起始显示页数
* @return
*/
public int getStartIndex() {
for(int i=1;i<=this.getSunPage();i+=8){
if(this.getCurrentIndex()>=i&&this.getCurrentIndex()<i+9){
startIndex=i;
break;
}
}
return startIndex;
}
/**
* 起如行数
* @return
*/
public int getBeginRow() {
//起始行, 当前行数-1*行大小
beginRow=(currentIndex-1)*rowSize;
return beginRow;
}
public void setBeginRow(int beginRow) {
this.beginRow = beginRow;
}
public int getSunPage() {
return sunPage;
}
//总页数
public void setSunPage(int sunRow) {
int temp=0;
temp=(sunRow%this.getRowSize()==0)?sunRow/this.getRowSize():sunRow/this.getRowSize()+1;
System.out.println("总页数: "+temp+" 大小:"+this.getRowSize());
this.sunPage=temp;
}
/**
* 当前页
* @return
*/
public int getCurrentIndex() {
return currentIndex;
}
public void setCurrentIndex(String currentIndex) {
//如是为空=1
if("".equals(currentIndex)||null==currentIndex||!IsNum.isNum(currentIndex)){
currentIndex="1";
}
int currentIndexs=Integer.parseInt(currentIndex);
//如果当前页大于总页数
if(currentIndexs>=this.getSunPage()){
currentIndexs=this.getSunPage();
}
if(currentIndexs<=0){
currentIndexs=1;
}
this.currentIndex = currentIndexs;
}
/**
* 行数数大小
* @return
*/
public int getRowSize() {
if(rowSize<=0){
rowSize=2;
}
return rowSize;
}
public void setRowSize(int rowSize) {
this.rowSize = rowSize;
}
}
JSP 分页技术 原创,测试OK,无论数据库有多少数据,可以尽情的翻!
因涉及的代码太多!这只是重心代码,其它就是传值,查询数据库之类的!因该不是什么大问题吧。。。。。。。。
还是把页面代码贴出来吧
<div>
<p>
<a href="${pageContext.request.contextPath}/EmpSerive.do?flag=showEmp¤tIndex=${currentIndex-1}">
上一页</a>
当前页【${currentIndex}/${totalPage}】
<c:forEach var="i" begin="${satrtIndex}" end="${satrtIndex+9}">
<a href="${pageContext.request.contextPath}/EmpSerive.do?flag=showEmp¤tIndex=${i}">
<c:if test="${currentIndex==i}"> <font color='red'> ${i} </font> </c:if>
<c:if test="${currentIndex!=i}">${i} </c:if>
</a>
</c:forEach>
<a href="${pageContext.request.contextPath}/EmpSerive.do?flag=showEmp¤tIndex=${currentIndex+1}">
下一页</a>
<input type="text" size="2" id="valuePage"/>
<a href="javascript:PageIndex()">跳转</a>
</p>
<%--页面跳转 --%>
<script type="text/javascript">
function PageIndex(){
var pagev=document.getElementById("valuePage");
location.href="${pageContext.request.contextPath}/EmpSerive.do?flag=showEmp¤tIndex="+pagev.value;
}
</script>
</div>
好吧!把实现类的方法也贴出来吧,看不懂不要怪我哈,因为我做测试用了反射机制,让我看我一下子也看不懂了!哈哈,看你需要的就行了。。
/**
* 根据hql分页
*/
@Override
public List<T> getPage(String hql, Object[] paramters, PageMoed pageMeod) {
Query query=sessionFactory.getCurrentSession().createQuery(hql);
if(paramters!=null){
for(int i=0;i<paramters.length;i++){
query.setParameter(i,paramters[i]);
}
}
query.setFirstResult(pageMeod.getBeginRow()).setMaxResults(pageMeod.getRowSize());
return (List<T>)query.list();
}
/**
* 根据对象分页
*/
@Override
public List<T> getPage(T e, PageMoed pageMeod) throws Exception {
Class cla=e.getClass();
String tableName=cla.getSimpleName();
Field[] field=cla.getDeclaredFields();//得到所有字段
//SQL语句接接
StringBuffer sb=new StringBuffer();
sb.append(" where 1=1 ");
//List<Object> listValue=new ArrayList<Object>();
//?值拼接
for(int i=0;i<field.length;i++){
Field f=field[i];
f.setAccessible(true);
Object obj=f.get(e); //得到字段的值
if(obj instanceof Set){
System.out.println("检测到Set.....");
((Set) obj).clear();
}else
// 加? 加值
if(!"".equals(obj)&&null!=obj){//如果字段不为空
sb.append(" and "+f.getName()+"= "+obj);
//listValue.add(obj);
}
}
//如有有排序的话
if(pageMeod.getOrder()!=null){
sb.append(" "+pageMeod.getOrder());
}
String hql="from "+tableName+" "+sb.toString();
System.out.println("HQL: "+hql);
Query query=sessionFactory.getCurrentSession().createQuery(hql);
//分页
List<T> liste=(List<T>)query.setFirstResult(pageMeod.getBeginRow()).setMaxResults(pageMeod.getRowSize()).list();
//那些年
return liste;
}
分享到:
相关推荐
描述“用 JSTL 实现 JSP 分页显示数据代码,MySQL 数据库,好用,有数据库和表创建代码!!!”详细地描述了该代码的功能和特点。该描述表明该代码使用 JSTL 实现了 JSP 分页显示数据的功能,并使用 MySQL 作为...
jsp分页技术可以与数据库的增删查改操作结合使用,实现对数据的全面管理。 在上述代码中,我们可以看到ContactDao类中有三个方法:getAllPage、getAll和getGrup。这些方法都是对数据库的操作,分别实现了数据的分页...
### JSP分页技术详解:初学者的完美指南 #### 引言 在现代Web开发中,数据展示的效率和用户体验至关...对于初学者而言,掌握JSP分页技术是迈向高级Web开发的重要一步,有助于在未来项目中更加高效地管理数据展示。
分页技术是Web开发中不可或缺的一部分,尤其在处理大数据量时,合理运用JSP分页和数据库分页可以极大地提高系统的响应速度和用户体验。通过对上述原理和实现步骤的理解,开发者可以更好地设计和优化自己的应用程序,...
### JSP连接SQL数据库实现数据分页显示 #### 概述 本文档通过一个实际案例展示了如何使用JSP(Java Server Pages)与SQL数据库进行交互,并实现数据的分页显示功能。该示例包含了详细的代码及注释,有助于理解整个...
"JSP数据库数据AJAX无刷新分页"是一个常见的技术实现,它结合了JavaServer Pages(JSP)、数据库技术、Ajax(Asynchronous JavaScript and XML)以及前端分页组件,为用户提供了一种无需整个页面刷新即可获取并显示...
只要通过JDBC连接上数据库 获得Connection 对象 套上此模板就可实现数据库数据分页机制……
在网页开发中,分页是一种常见的数据展示方式,特别是在处理大量数据时,它能帮助用户更有效地浏览和管理信息。JSP(JavaServer Pages)作为Java Web开发的一部分,提供了多种实现分页的方法。本篇文章将深入探讨...
本文件“JSP分页技术(多种方法)”中,将探讨几种常见的JSP分页实现方法。 1. **基于SQL的分页** 这是最基础的分页方法,通过在SQL查询语句中添加`LIMIT`和`OFFSET`或`ROWNUM`(根据数据库类型)来实现。例如,在...
同时,jsp分页技术可以实现数据的分页显示,提高了用户体验。 连接池技术 连接池技术是一种用于管理数据库连接的技术。它可以将多个数据库连接组合成一个池,供应用程序使用。当应用程序需要访问数据库时,可以从...
通过以上步骤,我们可以用JSP有效地实现分页显示数据库中的数据,提供流畅的用户体验,同时减轻服务器的压力。在实际项目中,还可以结合前端框架如Bootstrap等,进一步提升页面的美观度和交互性。
【JSP分页技术详解】 在网页开发中,分页是一种常见的数据展示方式,它能够有效地组织大量数据,提高用户体验。本资源包含了一个基于JSP的简单分页实现,配合Oracle数据库,提供了一套完整的可运行代码。接下来,...
本教程将聚焦于使用JavaServer Pages(JSP)结合MySQL数据库实现分页技术。 首先,我们需要理解JSP的基础。JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以实现服务器端的逻辑处理。在JSP中,...
### 基于JSP分页技术的研究 #### 一、引言 随着互联网技术的发展,特别是电子商务领域的兴起,Web应用程序需要处理的数据量急剧增加。面对海量数据的展示需求,如何高效、合理地呈现给用户成为了关键技术之一。...
**正文** `jsp分页组件+实例+数据库.rar` 是一...总的来说,`jsp分页组件+实例+数据库.rar` 包含了开发JSP应用程序中处理大数据量的关键元素,通过学习和实践,开发者可以掌握分页技术,提高Web应用的性能和用户体验。
**jsp分页技术算法详解** 在Web开发中,分页技术是必不可少的,尤其是在处理大量数据展示时。JSP(JavaServer Pages)作为Java的一种视图技术,提供了强大的功能来实现用户界面的动态生成。本篇文章将深入探讨JSP中...
这意味着开发者可以利用这段代码作为模板,快速实现在JSP应用中对数据库查询结果进行分页处理的功能。 #### 标签解析:“jsp 源代码 分页显示” 这些标签概括了文件的核心特性,强调了它是一段JSP源代码,专注于...
### JSP数据库操作例程:数据分页显示详解 在Web开发中,处理大量数据时,数据分页是一项常见的需求,以提升用户体验和系统性能。本文将深入解析一个基于Java Server Pages (JSP)实现的数据库操作例程,具体探讨...