1.什么是通用分页?它是什么?能做什么?
J2EE(Java 2 Platform, Enterprise Edition)是一种基于Java语言的企业级应用开发平台,该平台提供了完整的分布式计算环境和一系列的API,以便于实现各种企业级应用。通用分页是J2EE中经常用到的功能之一,用于展示分页数据。
J2EE通用分页通常采用的是MVC(Model-View-Controller)架构模式,其中Model层负责数据获取和处理,View层负责数据展示,Controller层负责协调Model和View之间的交互。通用分页的数据获取和处理主要在Model层中实现,通常需要查询数据库来获得需要分页展示的数据。
在实现J2EE通用分页时,常用的框架是Hibernate和Spring Framework。Hibernate是一个开源的对象关系映射(ORM)框架,它提供了一种将Java对象映射到关系型数据库中的方式,可以自动化地处理数据库相关操作。Spring Framework是一个开源的全栈企业级应用开发框架,它提供了一系列的工具和API,以便于开发人员实现各种企业级应用需求。
通用分页的展示和交互一般在View层中实现,常用的技术有JSP(JavaServerPage)、EL(Expression Language)、JSTL(JSP Standard Tag Library)、Bootstrap等。JSP是一种动态网页技术,可以在网页中嵌入Java代码,EL和JSTL则提供了一些常用的标记和表达式以简化网页编程。Bootstrap是一个流行的前端框架,可以提供一些易用的组件和样式以提高用户体验。
2.通用分页的特点有哪些?
2.1 可复用性高
J2EE通用分页是基于Java EE技术的通用功能,可以被应用到各种企业级应用中。开发人员可以在不同的应用中重复使用J2EE通用分页,减少了开发成本和时间。
2.2 灵活性好
J2EE通用分页可以根据不同的需求进行定制化开发。开发人员可以根据页面布局、数据量、用户需求等因素来设置分页参数,例如页数、每页显示的记录条数等。
2.3 实现简单
J2EE通用分页使用MVC模式,将数据获取、数据处理、数据展示等分离开来,开发人员只需要关注业务逻辑的实现即可。同时,使用Hibernate等ORM框架可以大大简化数据库操作,让分页实现更为简单。
2.4 用户体验好
J2EE通用分页可以使用一些交互效果和前端框架,例如Bootstrap等,让数据的展示更为美观、易用,提高了用户体验。
2.5 可扩展性强
J2EE通用分页可以根据业务需求进行扩展。例如,在数据量较大时,通常需要使用异步加载等技术来提高性能,可以通过定制化开发来实现。
2.6 对性能有一定要求
J2EE通用分页通常需要查询数据库来获得需要分页展示的数据,因此对数据库的性能有一定要求。同时,在分页过程中也需要考虑首页、尾页等情况,避免出现数据异常。
3.J2EE 通用分页的 pageBean为什么要封装?封装的优点有哪些?
3.1.1 简化参数传递
在进行数据分页时,需要传递多个参数,如当前页码、每页记录数、总记录数等等。将这些参数封装到 PageBean 中,可以方便参数传递和管理。
3.1.2 简化代码编写
将分页的数据与分页参数封装在 PageBean 中,可以减少程序员对分页逻辑的编写,提升代码的简洁度和可维护性。
3.1.3 提高代码可复用性
一般情况下,数据分页是一个被多个模块或页面所使用的功能,将分页逻辑封装在 PageBean 中,各个模块只需要调用对应的接口即可,提高代码可复用性。
3.1.4 方便扩展
PageBean 封装的数据类型和结构比较灵活,可以根据不同需求进行扩展,例如支持查询条件、排序等。
3.1.5 提高开发效率
使用 PageBean 进行数据分页,可以让开发人员更加专注于业务逻辑的实现,提高开发效率。
3.2.1方便管理数据
PageBean将所有与分页有关的参数封装到一个对象中,方便进行管理和维护。这个对象中会保存分页信息、分页数据等一些必要的参数,而且代码逻辑清晰,易于理解。
3.2.2封住了分页逻辑
封装Pagebean的好处是,将数据和分页逻辑打包在一起。开发人员不需要了解分页的具体实现细节,只需要操作PageBean提供的接口即可。这样能大大提高代码复用性,并使系统易于维护。
3.3.3方便展示数据
PageBean中不仅保存了分页相关的参数,还可以保存需要展示的数据集合。在前端页面展示数据时,只需要从PageBean中获取数据即可。这种方式可以使展示层与业务层直接的调用更加便捷。
3.3.4增加可扩展性
PageBean可以实现接口Serializable,将对象序列化后传输给其他系统或进程,这就增加了系统的可扩展性方便了业务拓展。
4.前台的通用分页案例. PageBean有哪些属性?怎样实现分页?
4.1 PageBean类
package com.yuan.utils; import java.util.Map; import javax.servlet.http.HttpServletRequest; /** * 分页工具类 * */ public class PageBean { private int page = 1;// 页码 private int rows = 10;// 页大小 private int total = 0;// 总记录数 private boolean pagination = true;// 是否分页 private String url; private Map<String,String[]> map ; /** * 最大页 * @return */ public int maxPage() { return this.total % this.rows == 0 ? this.total / this.rows: this.total / this.rows + 1; } /** * 下一页 * @return */ public int nextPage() { return this.page < this.maxPage() ? this.page+1 : this.page; } /** * 上一页 * @return */ public int prevPage() { return this.page >1 ? this.page -1 : this.page; } public void setRequest(HttpServletRequest req) { //初始化默认查询的第几页数据 this.setPage(req.getParameter("page")); //初始化页大小 this.setRows(req.getParameter("rows")); //是否分页 this.setPagination(req.getParameter("pagination")); this.setUrl(req.getRequestURL().toString()); this.setMap(req.getParameterMap()); } public void setPagination(String pagination) { if(StringUtils.isNotBlank(pagination)) this.setPagination(!"false".equals(pagination)); } public void setRows(String rows) { if(StringUtils.isNotBlank(rows)) this.setRows(Integer.parseInt(rows)); } public void setPage(String page) { if(StringUtils.isNotBlank(page)) this.setPage(Integer.parseInt(page)); } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public Map<String, String[]> getMap() { return map; } public void setMap(Map<String, String[]> map) { this.map = map; } public PageBean() { super(); } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getRows() { return rows; } public void setRows(int rows) { this.rows = rows; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public void setTotal(String total) { this.total = Integer.parseInt(total); } public boolean isPagination() { return pagination; } public void setPagination(boolean pagination) { this.pagination = pagination; } /** * 获得起始记录的下标 * * @return */ public int getStartIndex() { return (this.page - 1) * this.rows; } @Override public String toString() { return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]"; } } • 1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 • 10 • 11 • 12 • 13 • 14 • 15 • 16 • 17 • 18 • 19 • 20 • 21 • 22 • 23 • 24 • 25 • 26 • 27 • 28 • 29 • 30 • 31 • 32 • 33 • 34 • 35 • 36 • 37 • 38 • 39 • 40 • 41 • 42 • 43 • 44 • 45 • 46 • 47 • 48 • 49 • 50 • 51 • 52 • 53 • 54 • 55 • 56 • 57 • 58 • 59 • 60 • 61 • 62 • 63 • 64 • 65 • 66 • 67 • 68 • 69 • 70 • 71 • 72 • 73 • 74 • 75 • 76 • 77 • 78 • 79 • 80 • 81 • 82 • 83 • 84 • 85 • 86 • 87 • 88 • 89 • 90 • 91 • 92 • 93 • 94 • 95 • 96 • 97 • 98 • 99 • 100 • 101 • 102 • 103 • 104 • 105 • 106 • 107 • 108 • 109 • 110 • 111 • 112 • 113 • 114 • 115 • 116 • 117 • 118 • 119 • 120 • 121 • 122 • 123 • 124 • 125 • 126 • 127 • 128 • 129 • 130 • 131 • 132 • 133 • 134 • 135 • 136 • 137 • 138 • 139 • 140 • 141 • 142 • 143 • 144 • 145 • 146 • 147 • 148 • 149 • 150 • 151 • 152 • 153 • 154 • 155 • 156