`
he91_com
  • 浏览: 411276 次
文章分类
社区版块
存档分类
最新评论

JSP 分页技术 原创,测试OK,无论数据库有多少数据,可以尽情的翻!

 
阅读更多
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 数据库,好用,有数据库和表创建代码!!!”详细地描述了该代码的功能和特点。该描述表明该代码使用 JSTL 实现了 JSP 分页显示数据的功能,并使用 MySQL 作为...

    jsp分页技术及其对数据库两张表的增删查改和模糊查询

    jsp分页技术可以与数据库的增删查改操作结合使用,实现对数据的全面管理。 在上述代码中,我们可以看到ContactDao类中有三个方法:getAllPage、getAll和getGrup。这些方法都是对数据库的操作,分别实现了数据的分页...

    JSP分页技术,非常好的的学习Jsp分页技术的教程,适合初学者

    ### JSP分页技术详解:初学者的完美指南 #### 引言 在现代Web开发中,数据展示的效率和用户体验至关...对于初学者而言,掌握JSP分页技术是迈向高级Web开发的重要一步,有助于在未来项目中更加高效地管理数据展示。

    jsp已经数据库的分页技术

    分页技术是Web开发中不可或缺的一部分,尤其在处理大数据量时,合理运用JSP分页和数据库分页可以极大地提高系统的响应速度和用户体验。通过对上述原理和实现步骤的理解,开发者可以更好地设计和优化自己的应用程序,...

    JSP连接SQL数据库实现数据分页显示

    ### JSP连接SQL数据库实现数据分页显示 #### 概述 本文档通过一个实际案例展示了如何使用JSP(Java Server Pages)与SQL数据库进行交互,并实现数据的分页显示功能。该示例包含了详细的代码及注释,有助于理解整个...

    JSP数据库数据AJAX无刷新分页

    "JSP数据库数据AJAX无刷新分页"是一个常见的技术实现,它结合了JavaServer Pages(JSP)、数据库技术、Ajax(Asynchronous JavaScript and XML)以及前端分页组件,为用户提供了一种无需整个页面刷新即可获取并显示...

    jsp 实现数据库数据分页显示

    只要通过JDBC连接上数据库 获得Connection 对象 套上此模板就可实现数据库数据分页机制……

    目前最好的JSP分页技术

    在网页开发中,分页是一种常见的数据展示方式,特别是在处理大量数据时,它能帮助用户更有效地浏览和管理信息。JSP(JavaServer Pages)作为Java Web开发的一部分,提供了多种实现分页的方法。本篇文章将深入探讨...

    JSP分页技术(多种方法)

    本文件“JSP分页技术(多种方法)”中,将探讨几种常见的JSP分页实现方法。 1. **基于SQL的分页** 这是最基础的分页方法,通过在SQL查询语句中添加`LIMIT`和`OFFSET`或`ROWNUM`(根据数据库类型)来实现。例如,在...

    jsp分页+连接池技术

    同时,jsp分页技术可以实现数据的分页显示,提高了用户体验。 连接池技术 连接池技术是一种用于管理数据库连接的技术。它可以将多个数据库连接组合成一个池,供应用程序使用。当应用程序需要访问数据库时,可以从...

    JSP实现分页显示数据库中的数据

    通过以上步骤,我们可以用JSP有效地实现分页显示数据库中的数据,提供流畅的用户体验,同时减轻服务器的压力。在实际项目中,还可以结合前端框架如Bootstrap等,进一步提升页面的美观度和交互性。

    jsp简单分页,完整代码+orcle数据库源码,可直接运行

    【JSP分页技术详解】 在网页开发中,分页是一种常见的数据展示方式,它能够有效地组织大量数据,提高用户体验。本资源包含了一个基于JSP的简单分页实现,配合Oracle数据库,提供了一套完整的可运行代码。接下来,...

    jsp 分页技术 数据库MysqL

    本教程将聚焦于使用JavaServer Pages(JSP)结合MySQL数据库实现分页技术。 首先,我们需要理解JSP的基础。JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以实现服务器端的逻辑处理。在JSP中,...

    基于JSP分页技术的研究

    ### 基于JSP分页技术的研究 #### 一、引言 随着互联网技术的发展,特别是电子商务领域的兴起,Web应用程序需要处理的数据量急剧增加。面对海量数据的展示需求,如何高效、合理地呈现给用户成为了关键技术之一。...

    jsp分页组件+实例+数据库.rar

    **正文** `jsp分页组件+实例+数据库.rar` 是一...总的来说,`jsp分页组件+实例+数据库.rar` 包含了开发JSP应用程序中处理大数据量的关键元素,通过学习和实践,开发者可以掌握分页技术,提高Web应用的性能和用户体验。

    jsp分页技术算法jsp分页技术算法

    **jsp分页技术算法详解** 在Web开发中,分页技术是必不可少的,尤其是在处理大量数据展示时。JSP(JavaServer Pages)作为Java的一种视图技术,提供了强大的功能来实现用户界面的动态生成。本篇文章将深入探讨JSP中...

    jsp 分页显示数据库查询等的源代码

    这意味着开发者可以利用这段代码作为模板,快速实现在JSP应用中对数据库查询结果进行分页处理的功能。 #### 标签解析:“jsp 源代码 分页显示” 这些标签概括了文件的核心特性,强调了它是一段JSP源代码,专注于...

    JSP数据库操作例程 - 数据分页显示

    ### JSP数据库操作例程:数据分页显示详解 在Web开发中,处理大量数据时,数据分页是一项常见的需求,以提升用户体验和系统性能。本文将深入解析一个基于Java Server Pages (JSP)实现的数据库操作例程,具体探讨...

Global site tag (gtag.js) - Google Analytics