- 浏览: 253928 次
- 性别:
- 来自: 上海
最新评论
-
lazyox_2008:
多谢楼主配对那一段,解决了我的大问题啊
android蓝牙主动发起配对实例 -
yandol:
这个反射的createBond用法很有意思 这个代码能像非an ...
android蓝牙主动发起配对实例 -
hzxlb910:
例子还是短小看着一目了然。不错
初识AOP -
lteb2002:
在WEB中,是使用WebApplicationContext的 ...
[转]Spring中WebApplicationContext的研究 -
Mark_dev:
请问一下楼主,这个UUID是不是和设备有关啊,我使用你的 co ...
android蓝牙主动发起配对实例
百事通信息网
web应用开发中,分页是一项很重要的技术,分页效率直接影响web应用程序的性能.当然分页除了高效,还得考虑通用性.
昨天在网上花了一天时间研究分页,今天一早就动手将自已以前的分页程序重新设计.
这里我将源代码贴出来供大家讨论,希望大家提出宝贵意见
首先封装Page类
建PageUtil类,用来构告Page类的数据
以上二个类与业务层无关,接下来结合业务层应用,给出以下代码
用户操作业务的接口:
用户操作业务的具体实现:
UserService
UserService调用UserDao的方法实现分页,UserDao代码如下:
至此,一个完整的分页程序完成。下页给出Struts调用示例
action类:
view页面:
以上代码参考了downpour跟水如清二位仁兄的设计思想,特些声明.
web应用开发中,分页是一项很重要的技术,分页效率直接影响web应用程序的性能.当然分页除了高效,还得考虑通用性.
昨天在网上花了一天时间研究分页,今天一早就动手将自已以前的分页程序重新设计.
这里我将源代码贴出来供大家讨论,希望大家提出宝贵意见
首先封装Page类
import java.util.List; public class Page { private boolean hasPrevPage;//是否存在上一页 private boolean hasNextPage;//是否存在下一页 private int pageSize;//每页容量 private int totalPage;//总页数 private int totalRow;//总记录数 private int curPage;//当前页 private int beginIndex;//当前页开始索引号 private String url;//该页URL地址 private String param;//参数以&分隔 private String pageToolBar;//分页工具条 private List result;//当前页结果集(记录集) /** * 功能:初始化数据(查询前) * @param pageSize * @param url * @param param */ public Page(int pageSize,String url,String param) { this.pageSize=pageSize; this.url=(null==url)?"":url; this.param=(null==param)?"":param; } /** * 功能:初始化数据(查询后) * @param hasPrevPage * @param hasNextPage * @param pageSize * @param totalPage * @param totalRow * @param curPage * @param beginIndex * @param pageToolBar */ public Page(boolean hasPrevPage, boolean hasNextPage,int pageSize, int totalPage, int totalRow,int curPage, int beginIndex,String pageToolBar){ this.hasPrevPage=hasPrevPage; this.hasNextPage=hasNextPage; this.pageSize=pageSize; this.totalPage=totalPage; this.totalRow=totalRow; this.curPage=curPage; this.beginIndex=beginIndex; this.pageToolBar=pageToolBar; } public List getResult() { return result; } public void setResult(List result) { this.result = result; } public int getBeginIndex() { return beginIndex; } public void setBeginIndex(int beginIndex) { this.beginIndex = beginIndex; } public int getCurPage() { return curPage; } public void setCurPage(int curPage) { this.curPage = curPage; } public boolean isHasNextPage() { return hasNextPage; } public void setHasNextPage(boolean hasNextPage) { this.hasNextPage = hasNextPage; } public boolean isHasPrevPage() { return hasPrevPage; } public void setHasPrevPage(boolean hasPrevPage) { this.hasPrevPage = hasPrevPage; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getTotalRow() { return totalRow; } public void setTotalRow(int totalRow) { this.totalRow = totalRow; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public String getPageToolBar() { return pageToolBar; } public void setPageToolBar(String pageToolBar) { this.pageToolBar = pageToolBar; } public String getParam() { return param; } public void setParam(String param) { this.param = param; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }
建PageUtil类,用来构告Page类的数据
public class PageUtil { private final static int DEF_PAGE_SIZE = 10;//默认当前页的容量 /** * 功能:传入查询前初始化的page实例,创建一个新的Page实例 * @param page * @param totalRow * @return */ public static Page createPage(Page page, int totalRow) { return createPage(page.getUrl(),page.getParam(),page.getPageSize(), page.getCurPage(), totalRow); } public static Page createPage(String url,String param,int pageSize, int curPage, int totalRow) { pageSize = getpageSize(pageSize); curPage = getcurPage(curPage); int beginIndex = getBeginIndex(pageSize, curPage); int totalPage = getTotalPage(pageSize, totalRow); boolean hasNextPage = hasNextPage(curPage, totalPage); boolean hasPrePage = hasPrePage(curPage); String pageToolBar=getPageToolBar(url,param,hasPrePage, hasNextPage, pageSize, totalPage, totalRow,curPage); return new Page(hasPrePage, hasNextPage, pageSize, totalPage, totalRow, curPage, beginIndex,pageToolBar); } private static String getPageToolBar(String url,String param,boolean hasPrePage, boolean hasNextPage, int pageSize, int totalPage, int totalRow,int curPage){ StringBuffer strBuf=new StringBuffer(); boolean isHaveParam=false; if(null!=param && !"".equals(param)){ isHaveParam = true; } strBuf.append("当前第"+curPage+"页/共"+totalPage+"页 总记录"+totalRow+"条"); if(hasPrePage){ strBuf.append(" <a href=\""+url+"?page=1"+((isHaveParam)?"&"+param:"")+"\">首页</a>"); strBuf.append(" <a href=\""+url+"?page="+(curPage - 1)+((isHaveParam)?"&"+param:"")+"\">上一页</a>"); }else{ strBuf.append(" 首页 上一页"); } if(hasNextPage){ strBuf.append(" <a href=\""+url+"?page="+(curPage + 1)+((isHaveParam)?"&"+param:"")+"\">下一页</a>"); strBuf.append(" <a href=\""+url+"?page="+totalPage+((isHaveParam)?"&"+param:"")+"\">尾页</a>"); }else{ strBuf.append(" 下一页 尾页"); } return strBuf.toString(); } private static int getpageSize(int pageSize) { return pageSize == 0 ? DEF_PAGE_SIZE : pageSize; } private static int getcurPage(int curPage) { return curPage == 0 ? 1 : curPage; } private static int getBeginIndex(int pageSize, int curPage) { return (curPage - 1) * pageSize; } private static int getTotalPage(int pageSize, int totalRow) { int totalPage = 0; if (totalRow % pageSize == 0) totalPage = totalRow / pageSize; else totalPage = totalRow / pageSize + 1; return totalPage; } private static boolean hasPrePage(int curPage) { return curPage == 1 ? false : true; } private static boolean hasNextPage(int curPage, int totalPage) { return curPage == totalPage || totalPage == 0 ? false : true; } }
以上二个类与业务层无关,接下来结合业务层应用,给出以下代码
用户操作业务的接口:
import com.note.comm.Page; import com.note.dao.UsersDAO; import com.note.model.Users; public interface IUserService { public UsersDAO getUsersDao(); public void setUsersDao(UsersDAO usersDao); ...... /** * 功能:得到当前页的分页信息与当前页的记录集(存入在page的result属性中) * @param page * @return */ public Page listUsers(Page page); ...... }
用户操作业务的具体实现:
UserService
import java.util.List; import com.note.bussies.service.IUserService; import com.note.comm.Page; import com.note.comm.PageUtil; import com.note.dao.UsersDAO; import com.note.model.Users; public class UserService implements IUserService { private UsersDAO usersDao; public UsersDAO getUsersDao() { return usersDao; } public void setUsersDao(UsersDAO usersDao) { this.usersDao = usersDao; } ...... public Page listUsers(Page page){ int totalRecords = this.usersDao.getUserCount(); page = PageUtil.createPage(page, totalRecords); if(totalRecords == 0)return page; List users = this.usersDao.getUsersByPage(page); page.setResult(users); return page; } }
UserService调用UserDao的方法实现分页,UserDao代码如下:
import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.note.comm.Page; import com.note.model.Users; /** * Data access object (DAO) for domain model class Users. * @see com.note.dao.Users * @author MyEclipse - Hibernate Tools */ public class UsersDAO extends HibernateDaoSupport { private static final Log log = LogFactory.getLog(UsersDAO.class); //property constants public static final String USERNAME = "username"; public static final String PASSWORD = "password"; public static final String LEVEL = "level"; protected void initDao() { //do nothing } ...... public int getUserCount(){ int count = 0; String querySentence = "SELECT count(*) FROM Users"; Session s=getSession(); Query query = s.createQuery(querySentence); count = ((Integer)query.iterate().next()).intValue(); releaseSession(s);//注意,些处必须关闭Session return count; } public List getUsersByPage(final Page page){ return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session s){ Query query=s.createQuery("From Users AS users ORDER BY users.userid"); query.setFirstResult(page.getBeginIndex()); query.setMaxResults(page.getPageSize()); return query.list(); } }); } }
至此,一个完整的分页程序完成。下页给出Struts调用示例
action类:
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; import org.apache.struts.actions.DispatchAction; import com.note.bussies.service.IUserService; import com.note.comm.Page; import com.note.comm.ParamUtil; import com.note.model.Users; import com.note.sys.Constant; /** * MyEclipse Struts * Creation date: 10-09-2006 * * XDoclet definition: * @struts.action path="/user" name="userForm" input="/form/user.jsp" scope="request" * @struts.action-forward name="success" path="/success.htm" redirect="false" * @struts.action-forward name="fail" path="/fail.htm" redirect="false" */ public class UserAction extends DispatchAction { private IUserService ius; public IUserService getIus() { return ius; } public void setIus(IUserService ius) { this.ius = ius; } public ActionForward display(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //获得url String contextPath = request.getContextPath(); String PathName="listUser" + Constant.FILEPREFIX; String url=contextPath+"/"+PathName; //获得参数 int curPage = ParamUtil.getInt(request, "page", 1); String method=ParamUtil.getString(request, "method", "display"); String param="method="+method; Page page=new Page(3,url,param); page.setCurPage(curPage); page=this.ius.listUsers(page); request.setAttribute("users",page);//保存到request中 return mapping.findForward("success"); } }
view页面:
<logic:present name="users"> <table> <logic:iterate id="user" name="users" indexId="number" property="result"> <tr> <td> <bean:write name="number" /> <bean:write name="user" property="userid" /> <bean:write name="user" property="username" /> </td> </tr> </logic:iterate> </table> <bean:write name="users" property="pageToolBar" filter="false" /> </logic:present>
以上代码参考了downpour跟水如清二位仁兄的设计思想,特些声明.
发表评论
-
android数据库操作(二)
2011-11-12 00:45 1496package cn.madfinger.android.co ... -
android数据库操作(一)
2011-10-31 13:18 1776为了以后的项目使用Android数据库更方便,自已写了一个小的 ... -
android蓝牙主动发起配对实例
2011-09-24 08:39 25573package cn.madfinger.core; i ... -
最给力的办公平台
2011-02-24 01:02 1589SUCANG协同采用AJAX、J2EE、MV ... -
DWR应用总结
2006-11-11 10:47 10038百事通信息网 配置调试: DWR的配置说明,网上已经是N多 ... -
[求教]关于DWR+Spring延迟加载的问题
2006-11-09 12:10 7137百事通信息网 今天用DWR+Spring做整合时,发现不能通 ... -
[转]Hibernate应用中如何处理批量更新和批量删除?
2006-11-02 10:36 10201百事通信息网 在Hibernate应用中如何处理批量更新和 ... -
初识AOP
2006-11-02 00:07 4371百事通信息网 学习Spring AOP之前,先来了 ... -
AOP的应用领域
2006-11-01 11:46 2563百事通信息网 AOP的应用领域: Authentica ... -
hibernate多表查询
2006-10-30 19:01 27183百事通信息网 我的demo小程序随着我学习的过程、 ... -
spring+hibernate之applicationContext.xml配置
2006-10-27 20:31 39706百事通信息网 最近一段时间潜心自学struts,spring ... -
Spring用回调HibernateCallBack方法
2006-10-27 20:28 7674百事通信息网 Spring用回调HibernateCall ... -
[转]Spring中WebApplicationContext的研究
2006-10-27 20:27 5935百事通信息网 作者:laoer 引自:http://b ... -
struts+spring整合测试
2006-10-27 20:24 6812百事通信息网 struts+spr ... -
将action得到的值,通过request显示到页面中
2006-10-27 20:13 2513百事通信息网 今天又遇到一个问题,将action ... -
DWR+SPRING整合
2006-10-27 19:41 3520百事通信息网 Ajax,它 ... -
按步就班使用struts验证框架
2006-10-26 22:19 4099使用动态FormBean与struts验证框架 第一步,安装 ... -
[转]Log4J 最佳实践之全能配置文件
2006-10-26 16:39 1535LOG4J的配置之简单使它遍及于越来越多的应用中了:Log4J ... -
[转]Log4J 最佳实践之全能配置文件
2006-10-26 16:38 1514LOG4J的配置之简单使它遍及于越来越多的应用中了:Log4J ... -
[转]关于hibernate中的锁机制
2006-10-26 14:57 1633(转载)关于hibernate中的 ...
相关推荐
Java Web分页技术是Web应用程序中常用的一种数据展示方式,它允许用户逐步浏览大量的数据集合,而不会一次性加载所有数据,从而提高页面加载速度和用户体验。Struts2作为一款流行的MVC框架,提供了实现分页功能的...
文章通过对Java-Web分页技术的研究,为开发者提供了一种有效管理大量数据和提升用户体验的解决方案。分页技术不仅提高了信息检索的效率,还通过合理管理数据存储、优化查询效率和确保数据的正确显示,确保了系统在...
"Java Web分页技术与实现" Java Web分页技术是指在Java Web应用中对显示的数据进行分页显示,以提高用户体验和系统性能。分页技术可以在Web服务器中或数据库服务器中实现。 在Web服务器中实现分页可以利用...
Java Web分页技术是网页应用开发中不可或缺的一部分,主要用于处理大量数据查询时的展示问题。在JSP(Java Server Pages)开发中,分页技术能够有效地提高系统性能,提升用户体验。下面将详细介绍分页的基本概念、...
以下是对基于Mootools库的Web分页技术的详细解释。 1. **Web分页原理** Web分页主要涉及如何在用户界面上有效地显示大量数据。传统的分页方案通常在数据库或Web服务器端进行,但这可能导致不必要的数据传输和延迟...
### Java Web分页技术详解 在Java Web开发中,分页技术是提升用户体验、优化数据库查询性能的关键技术之一。本文将深入探讨如何在JSP页面上实现简单的分页功能,重点在于SQL语句的处理与优化。 #### 分页概念与...
基于Web的分页技术的研究与实现 在当今的信息时代,网络已经成为我们生活中不可或缺的一部分,而网页则成为我们获取信息的主要来源。当我们在浏览网页时,不可避免地会碰到有的数据不能在一个页面完全显示出来的...
**网页分页技术详解** 网页分页是一种常见的数据展示策略,尤其在大数据量的场景下,如电商的商品列表、社交网络的动态流等。通过分页,用户可以逐步浏览大量信息,而不会一次性加载所有内容,这提高了网页的加载...
综上所述,Web分页技术是Web应用中的关键组成部分,它涉及到HTML、Java、数据库技术和脚本语言的综合运用。选择合适的技术栈并合理实现分页,对于提升Web应用的性能和用户体验至关重要。随着Web技术的不断发展,分页...
在Web页面中,当数据量过大时,为了提高用户体验和加载速度,通常会采用分页技术来展示内容。本教程将深入探讨10种不同的JS Web分页效果,这些效果设计精良,适用于现代网站的需求。 1. **基础分页**:这是最简单的...
"Web分页控件例子Demo"是一个示例项目,旨在展示如何在网页应用中实现高效且用户友好的分页功能。下面我们将深入探讨Web分页控件的相关知识点,并结合给出的文件名进行分析。 1. **分页的基本概念**: 分页是将...
### Java Web 分页技术详解 #### 一、引言 在Java Web开发中,...通过上述内容的学习,开发者可以更好地理解和掌握Java Web分页技术,并将其应用于实际项目中。希望这些知识能够帮助到正在学习Java Web开发的朋友。
实现Web分页的方法有很多,包括使用服务器端分页和客户端分页。服务器端分页意味着每次用户切换页面时,服务器都会根据请求的页码和每页记录数返回对应的数据。而客户端分页则是在前端JavaScript中完成,通常利用...
Java Web分页技术是开发Web应用时不可或缺的一部分,特别是在处理大量数据展示时,为了提高用户体验,通常需要将数据分页显示。本篇将详细介绍Java Web中的分页技术和代码实现。 一、分页技术概述 在Java Web开发...
本篇文章将深入探讨“简单web分页实现”的概念、原理以及实现方法。 首先,我们要理解分页的基本原理。分页通常涉及到两个主要方面:前端显示和后端数据处理。前端负责展示页面上的导航元素(如页码),并根据用户...
本主题将深入探讨“web分页代码”的实现,涵盖关键概念、技术和实践策略。 一、分页原理 1. 分页的基本思想是将数据集拆分成多个部分,每个部分称为一个“页”,用户可以逐页浏览,而不是一次性加载所有数据。这在...