通用分页实现及其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. }  
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值