技术架构:
web层可以是任意的MVC框架,目前只实现了SpringMVC和Struts的版本(Struts版已经在weblogic7下跑通,tomcat5还不行);
dao层也没有任何限制,只要按照范例中的模式来做既可;
最终页面上用一个标签来显示翻页按钮等。
btw:谁有兴趣想写个webwork版本的,可以和我联系,或直接发个patch给我
---------------------------------
工作原理:想法很简单,就是应用设计模式里的"模板方法模式",把分页计算的逻辑封装在一个抽象父类(PagingController)里面,留下三个抽象方法:doHandleRequest(处理请求)、getTotalRecordsNumber(计算总记录数)、makeSearchCriteria(构造查询条件,可选)供子类型重写,使得子类型尽量的简单,让我们可以专注于业务逻辑而不需要处理分页逻辑。示例如下:
代码
- public class UserPagingController extends PagingController {
- private final Logger logger = Logger.getLogger(this.getClass());
- private UserDAO userDAO;
- protected ModelAndView doHandleRequest(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- Map map = super.getSearchCriteria(request);
- int beginNo = super.computeRecordsBeginNo(request);
- int recordsNumber = super.computeRecordsNumberToRead(request);
- List usersList = userDAO.findUsers(map, beginNo, recordsNumber);
- logger.debug(usersList);
- return new ModelAndView("usersList", "usersList", usersList);
- }
- protected int getTotalRecordsNumber(HttpServletRequest request) {
- int result = userDAO.countUsers(super.getSearchCriteria(request));
- logger.debug("users number================:" + result);
- return result;
- }
- protected Map makeSearchCriteria(HttpServletRequest request) {
- HashMap map = new HashMap();
- String firstName = request.getParameter("firstName");
- if (firstName != null && firstName.trim().length() > 0) {
- map.put("firstName", firstName);
- }
- logger.debug(map);
- return map;
- }
- public void setUserDAO(UserDAO userDAO) {
- this.userDAO = userDAO;
- }
- }
<script>render_code();</script>
Struts版原理相同。
在页面显示翻页链接只需一行代码:
代码
- <page:pagebar url="/user_query.html?" bordercolor="#F4F9FF" bgcolor="#F4F9FF"/>
分享到:
相关推荐
本主题将深入探讨“通用数据库分页”以及如何通过扩展dbutil工具来实现这一功能。我们将从以下几个方面展开讨论: 1. **数据库分页原理**: 数据库分页的基本思想是将数据分成若干个页,每次只返回用户请求的一页...
【数据库分页显示】在开发WEB应用系统时,特别是面对大量数据时,分页显示是一项重要的优化技术。它避免一次性加载所有数据导致的性能下降和用户体验不佳。在MySQL数据库中,可以使用`LIMIT`关键字进行分页,例如`...
StrutsCode[数据库分页] 是一个基于Struts框架实现的数据库分页功能的示例项目。在Web开发中,数据库分页是提高用户体验的重要手段,尤其在处理大量数据时,它能让用户更加高效地浏览和查找所需信息。Struts作为一款...
### Oracle通用数据库存储过程代码——高效分页存储过程解析 #### 标题解析 标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能...
本压缩包“超强php分页打包 通用分页 万能分页 ajax分页 google分页”提供了一系列的分页解决方案,包括了基本的PHP分页、通用的分页实现、以及结合AJAX技术的动态分页,旨在满足各种项目需求。下面将详细介绍这些...
在选择分页方案时,需考虑效率和通用性。根据资料内容,分页方案二(利用ID大于多少和`SELECT TOP`分页)的效率最高,但需要动态拼接SQL;方案一(利用`NOT IN`和`SELECT TOP`分页)次之,同样需要拼接SQL;方案三...
数据库分页技术是数据库管理系统中用于处理大量数据查询时,以分批次的方式返回结果集的一种策略,这有助于提高用户体验并减少服务器的负载。本文将详细探讨三种常见的分页技术,适用于MySQL、SQL Server 2000/2005 ...
总的来说,这个项目展示了如何在Java Web环境中,利用Struts2、Spring和MyBatis三大框架,构建一个具备通用分页和拦截器功能的应用,为开发者提供了跨数据库的分页解决方案。通过学习和理解这个示例,开发者可以更好...
标题中的"PHP+mysql数据库分页类万能版"是一个基于PHP编程语言和MySQL数据库的分页类库,它提供了一种通用的解决方案,适用于各种数据检索场景,以实现高效、灵活的页面数据加载。这类分页类通常包括对SQL查询的处理...
"Struts+Spring+Hibernate通用分页解决方案"是针对基于这三大框架(Struts、Spring、Hibernate)的Java Web应用所设计的一种高效且可复用的分页策略。以下是关于这个主题的详细解释: 1. **Struts框架**:Struts是...
因此,更好的做法是结合数据库的分页功能和JDBC的滚动结果集特性,设计出既能满足性能要求又具有良好扩展性的分页解决方案。 在实际开发中,可以创建一个分页工具类,封装分页查询的逻辑,接受SQL语句、当前页数、...
这个"java通用分页代码实例"提供了一种适用于任意数据库的解决方案,具有高可移植性和易用性。 分页的核心在于对数据库查询结果进行分割,只返回当前页面所需的数据,同时提供翻页链接或按钮,允许用户浏览更多的...
网络上有一种通用的JDBC分页方案,它创建了一个名为`ResultSetWithPage`的新接口,该接口继承自`ResultSet`并添加了分页相关的方法,如`getPageSize()`, `getCountOfPages()`, `getCountOfRows()`, `nextPage()`, `...
通用PHP分页组件是一种高效的解决方案,它解决了在网站开发中处理大量数据时的分页问题。在网页上显示所有数据可能会导致页面加载速度慢,用户体验下降,因此分页成为了一个必要的设计元素。这个PHP分页组件的核心...
Mybatis通用分页插件能自动识别并适配这些差异,为开发者提供了一种跨数据库的分页解决方案。 安装和使用Mybatis通用分页插件相对简单。首先,需要将PageHelper库添加到项目依赖中,通常通过Maven或Gradle管理。...
这个程序提供了灵活的分页解决方案,其核心功能包括: - **配置参数**:允许设置每页显示的记录数、默认页码等。 - **计算总页数**:根据数据库查询结果自动计算总页数。 - **动态SQL生成**:根据当前页数生成...
通用数据分页是指设计一个可复用的分页解决方案,适用于不同的数据源和业务场景。在这个压缩包文件中,我们可以找到一个基于Java OOP(面向对象编程)实现的通用数据分页示例。 首先,让我们深入理解Java OOP在数据...
ASP(Active Server Pages)是一种微软...通过对这个文件的深入理解和学习,你可以掌握如何在ASP环境中实现一个高效的通用分页解决方案。不过,要注意文件可能还在优化过程中,可能需要根据实际需求进行调整和测试。
- **分页方案三**(利用SQL的游标存储过程分页)虽然通用性好,但性能最差。 在选择分页方案时,应根据具体的应用场景和数据特点进行综合考量。例如,在数据量较大且ID已有序的情况下,优先考虑分页方案二;而对于...
"hibernate通用分页"就是为了解决这一问题,提供一个方便、易用的分页解决方案。 分页的核心在于如何根据用户请求的数据范围(如页码和每页显示条数)来查询数据库,并返回相应的结果集。在Hibernate中,我们可以...