`

通用分页实现及其OO设计探讨(1)

阅读更多
3分页辅助类
java 代码
  1. ViewPageHelper.java   
  2. /**  
  3. * 分页辅助类,用于减化Controller中的代码  
  4. */  
  5. public class ViewPageHelper {   
  6. private static final int FIRST_PAGE_VALUE = 1;   
  7.   
  8. private static final int PREVIOUS_PAGE_VALUE = 2;   
  9.   
  10. private static final int NEXT_PAGE_VALUE = 3;   
  11.   
  12. private static final int LAST_PAGE_VALUE = 4;   
  13.   
  14. private static final int SPECIAL_PAGE_VALUE = 5;   
  15.   
  16. public static final String FIRST_PAGE = "FIRST_PAGE";   
  17.   
  18. public static final String PREVIOUS_PAGE = "PREVIOUS_PAGE";   
  19.   
  20. public static final String NEXT_PAGE = "NEXT_PAGE";   
  21.   
  22. public static final String LAST_PAGE = "LAST_PAGE";   
  23.   
  24. public static final String SPECIAL_PAGE = "SPECIAL_PAGE";   
  25.   
  26. /**分页动作参数名**/  
  27. public static final String PAGE_ACTION = "page_action";   
  28.   
  29. /**分页对象属性名**/  
  30. public static final String SESSION_PAGE = "session_page";   
  31.   
  32. /**页号参数名**/  
  33. public static final String PAGE_NO = "page_no";   
  34.   
  35. private static Map actionMap = new HashMap();   
  36. static {   
  37. actionMap.put(FIRST_PAGE, new Integer(FIRST_PAGE_VALUE));   
  38. actionMap.put(PREVIOUS_PAGE, new Integer(PREVIOUS_PAGE_VALUE));   
  39. actionMap.put(NEXT_PAGE, new Integer(NEXT_PAGE_VALUE));   
  40. actionMap.put(LAST_PAGE, new Integer(LAST_PAGE_VALUE));   
  41. actionMap.put(SPECIAL_PAGE, new Integer(SPECIAL_PAGE_VALUE));   
  42. }   
  43. /**  
  44. * 执行分页动作  
  45. * @param page 分页对象  
  46. * @param action 分页动作参数  
  47. * @param pageIndex 页号  
  48. */  
  49. public static void doAction(ViewPage page, String action, int pageIndex) {   
  50. int actionIndex = 0;   
  51. if (page == null) {   
  52. throw new NullPointerException("Page对象null");   
  53. }   
  54. if (action == null || "".equals(action)) {   
  55. throw new IllegalArgumentException("无效的分页动作参数null");   
  56. }   
  57. action = action.toUpperCase();   
  58. if (!actionMap.containsKey(action)) {   
  59. throw new UnsupportedOperationException("不支持的分页动作参数:" + action);   
  60. }   
  61. Integer index = (Integer) actionMap.get(action);   
  62. actionIndex = index.intValue();   
  63. switch (actionIndex) {   
  64. case FIRST_PAGE_VALUE:   
  65. page.gotoFirstPage();   
  66. break;   
  67. case PREVIOUS_PAGE_VALUE:   
  68. page.gotoPreviousPage();   
  69. break;   
  70. case NEXT_PAGE_VALUE:   
  71. page.gotoNextPage();   
  72. break;   
  73. case LAST_PAGE_VALUE:   
  74. page.gotoLastPage();   
  75. break;   
  76. case SPECIAL_PAGE_VALUE:   
  77. page.gotoPage(pageIndex);   
  78. }   
  79. }   
  80.   
  81. public static void doAction(ViewPage page, String action){   
  82. doAction(page, action, 1);   
  83. }   
  84. }  
五、应用通用分页框架
1
.继承AbstractViewPage类,实现queryPageList(int startRow, int endRow)
queryTotalRows()
方法。

protected int queryTotalRows() throws Exception
获得查询条件的总记录数

protected List queryPageList(int startRow, int rowCount)
用于查询指定范围的数据。startRow为开始记录号, rowCount为查询的记录数

queryPageList(0,20)
为查询从第一条开始的20条记录。

使用Ibatis可以由queryPageList调用queryForList()方法。

java 代码
  1. /**  
  2. * 用户信息分页内部类  
  3. */  
  4. class UserInfoPage extends AbstractViewPage{   
  5.   
  6. //------------------------------------------------   
  7. //实现AbstractViewPage抽象类的抽象方法   
  8. //------------------------------------------------   
  9.   
  10. /**  
  11. * @see com.prs.application.ehld.web.mvc.AbstractViewPage#getPageDate(int, int)  
  12. */  
  13. protected List queryPageList(int startRow, int endRow) throws Exception {   
  14. return sampleAction.getUserInfoList(startRow, endRow);   
  15. }   
  16.   
  17. /**   
  18. * @see com.prs.application.ehld.web.mvc.AbstractViewPage#getRows()  
  19. */  
  20. protected int queryTotalRows() throws Exception {   
  21. return sampleAction.getUserCount();   
  22. }   
  23.   
  24. }   
  25.   
  26.   
  27.   
  28. 3. 在Contrller中的实现   
  29. public ModelAndView listUser(HttpServletRequest request,   
  30. HttpServletResponse response) throws Exception {   
  31. String pageAction =    
  32. RequestUtils.getStringParameter(request,ViewPageHelper.PAGE_ACTION);   
  33. Integer pageIndex =    
  34. RequestUtils.getIntParameter(request,ViewPageHelper.PAGE_NO);   
  35. //声明分页对象   
  36. ViewPage userPage =   
  37. (ViewPage) request.getSession().getAttribute(ViewPageHelper.SESSION_PAGE);   
  38. //第一次请求   
  39. if(pageAction == null || userPage == null){   
  40. //构建一个新的分页对象   
  41. userPage = new UserInfoPage();   
  42. //设置分页大小   
  43. userPage.setPageSize(2);   
  44. }else{   
  45.   
  46. if(ViewPageHelper.SPECIAL_PAGE.equals(pageAction)){   
  47. //如果页数为空,则默认为1   
  48. if (pageIndex == null)   
  49. pageIndex = new Integer(1);   
  50. ViewPageHelper.doAction(userPage,pageAction,pageIndex.intValue());   
  51. }else{   
  52. ViewPageHelper.doAction(userPage,pageAction);   
  53. }    
  54. }   
  55.   
  56. //从分页对象中获得当前页数据   
  57. List userInfoList = userPage.getPageData();   
  58.   
  59. ModelAndView mav = new ModelAndView(userInfoListView);    
  60. mav.addObject(this.userInfoListKey,userInfoList);   
  61. request.getSession().setAttribute(ViewPageHelper.SESSION_PAGE,userPage);   
  62. return mav;   
  63. }  
 
分享到:
评论
4 楼 xx_liuhui 2008-10-04  
能发份给我吗  210liuhui@163.com
3 楼 liuwg 2008-08-30  
能把它发给我的邮箱:liuwgcom@163.com
thank you
2 楼 liuwg 2008-08-30  
还有完整的代码,我需要。
1 楼 hellofz 2008-04-16  
能把这实例发一份给我吗?
z5307350@163.com
tks

相关推荐

    通用分页实现及其OO设计探讨(2)

    本话题将深入探讨“通用分页实现及其OO设计”,结合给定的“Paginaction.jsp”文件,我们可以进一步了解在Java Web开发中如何有效地实现分页功能。 首先,我们需要理解分页的基本概念。分页是将大量数据分割成多个...

    java 通用分页 java 通用分页

    Java 通用分页详解 Java 通用分页是指在Java编程中对大量数据进行分页处理,以提高系统效率和性能。下面对Java通用分页的知识点进行详细说明: 1. 分页的必要性 在实际项目中,数据量可能非常大,直接查询所有...

    超强php分页打包 通用分页 万能分页 ajax分页 google分页

    本压缩包“超强php分页打包 通用分页 万能分页 ajax分页 google分页”提供了一系列的分页解决方案,包括了基本的PHP分页、通用的分页实现、以及结合AJAX技术的动态分页,旨在满足各种项目需求。下面将详细介绍这些...

    sql Server 通用分页存储过程

    sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程

    SSM 实现通用分页

    在这个项目中,"SSM实现通用分页"指的是通过这三个框架来实现数据的分页展示功能,这在大数据量的网页展示中尤为重要,可以有效提升用户体验并减轻服务器压力。 首先,Struts2作为MVC框架,负责处理HTTP请求和响应...

    java通用分页代码实例.rar

    这个"java通用分页代码实例"应该包含了上述概念的实现,你可以通过解压"page"文件查看具体代码,学习如何将这些理论应用到实践中。通过学习和理解这个实例,你可以更好地掌握Java中的分页技术,并将其应用于自己的...

    使用SQL语句实现通用分页查询

    使用SQL语句实现通用分页查询,支持模糊查询等。

    JAVA写的通用分页

    本文将详细探讨"JAVA写的通用分页"这一主题,结合描述中的"通用高效分页存储过程实现",我们将深入理解Java分页的原理、实现方式以及优化策略。 首先,分页的基本概念是将大量数据分块展示,而不是一次性加载所有...

    通用分页方法接口.rar

    二、设计通用分页接口 一个通用的分页方法接口应该包含以下几个核心元素: 1. **页码(Page Number)**:表示当前请求的页面位置,通常从1开始计数。 2. **每页大小(PageSize)**:定义每一页显示的数据条目数量...

    java web项目分页通用实现

    本DEMO主要展示了如何实现一个通用的分页功能,覆盖了后台和前台的处理逻辑。以下是对这个主题的详细阐述: 一、分页原理 分页的核心原理是通过限制每次查询的数据量,只获取用户当前需要查看的一部分数据,同时...

    Mybatis通用分页插件

    Mybatis通用分页插件是Java开发中广泛使用的ORM(对象关系映射)框架扩展,主要针对Mybatis进行优化,提供了高效便捷的分页功能。这个插件的目的是简化在数据库查询时的分页操作,使得开发者能够更专注于业务逻辑,...

    java 分页通用代码

    综上所述,Java实现分页通用代码主要包括创建Page对象、处理分页参数、编写分页SQL、填充Page对象及提供相关辅助方法。在实际项目中,这些组件可以抽象成一个通用的分页工具类或者服务,以提高代码复用性和可维护性...

    SSH通用分页组件 SSH分页

    SSH分页 分页 通用分页 struts2分页

    hibernate 通用分页的实现

    hibernate_mysql_struts2 实现的通用分页类.欢迎指正

    C#通用分页.rar

    描述中没有提供具体信息,但我们可以推测这个压缩包可能包含了一个示例项目或者代码库,用于演示如何在C#和ASP.NET中实现通用的分页功能。这可能包括一个数据库查询、数据绑定到分页控件,以及相关的用户界面设计。 ...

    PHP通用分页程序

    本文将深入探讨PHP分页的实现原理和具体步骤,并通过一个名为“小贤PHP通用分页程序”的实例进行详解。 1. **分页原理** 分页的基本思想是将大量数据分成多个小块(页),每次只加载一部分数据到前端展示,用户...

    封装通用的Spring3+Struts2+JPA的CRUD 通用分页实现

    "封装通用的Spring3+Struts2+JPA的CRUD 通用分页实现"是一个典型的Java Web开发实践,它结合了Spring框架的依赖注入、Struts2的MVC模式以及JPA(Java Persistence API)的数据持久层处理,来实现数据的创建、读取、...

    Java 通用分页

    本文将详细探讨Java中的通用分页实现方法。 首先,我们要理解分页的基本概念。分页主要包括两个关键参数:当前页码(Page Number)和每页显示条数(Page Size)。通过这两个参数,我们可以计算出当前页面应该显示的...

Global site tag (gtag.js) - Google Analytics