java web 分页解决方案

简介:

web开发中经常需要用到分页,我然来的做法是每次需要分页时都把代码copy一份,比如有10个页面有分页,那么我分页的代码就有10个版本.这样导致代码的重用性太低了.

那么如何解决呢?

把分页的页面和逻辑抽取出来,提高代码质量和重用性.

(1)分页的页面抽取出来

Java代码   收藏代码
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@ taglib prefix="s" uri="/struts-tags"%>  
  4. <table style="height: 35px">  
  5.     <tr>  
  6.         <td nowrap="nowrap" style="width: 6%">  
  7.         <td nowrap="nowrap" style="width: 63%"><span>共<s:property  
  8.                     value="view.totalRecords" />条记录, 当前第 <s:if  
  9.                     test="view.totalPages==0">0</s:if> <s:else>  
  10.                     <s:property value="view.currentPage" />  
  11.                 </s:else>/ <s:property value="view.totalPages" />页, 每页<s:property  
  12.                     value="view.recordsPerPage" />条记录  
  13.         </span></td>  
  14.         <td nowrap="nowrap">  
  15.             <button type="button" class="btn btn-info" style="padding: 1px 10px"  
  16.                 onclick="toPageFirst(${param.action})">首页</button>  
  17.             <button type="button" class="btn btn-info" style="padding: 1px 10px"  
  18.                 onclick="toPagePre(${param.action})">上一页</button>  
  19.             <button type="button" class="btn btn-info" style="padding: 1px 10px"  
  20.                 onclick="toPageNext(${param.action})">下一页</button>  
  21.             <button type="button" class="btn btn-info" style="padding: 1px 10px"  
  22.                 onclick="toPageLast(${param.action})">尾页</button>  
  23.             <button type="button" class="btn btn-info" style="padding: 1px 10px"  
  24.                 onclick="toPageGo(${param.action})">转</button>   
  25.             <s:if test="view.totalPages==0">  
  26.                 <input  id="view.currentPage"  
  27.                     name="view.currentPage" size="5"  
  28.                       
  29.                       
  30.                     style="margin-bottom: 0px; width: 50px; ime-mode: disabled; text-align: right; padding: 0px 1px 0px 0px; height: 20px; display: inline-block"  
  31.                     value="0" />  
  32.             </s:if> <s:else>  
  33.                 <s:textfield cssClass="form-control" id="view.currentPage"  
  34.                     name="view.currentPage" size="5"  
  35.                     onkeypress="return onlyNumber(event);" onpaste="return false;"  
  36.                       
  37.                     style="margin-bottom: 0px; width: 50px; ime-mode: disabled; text-align: right; padding: 0px 1px 0px 0px; height: 20px; display: inline-block"  
  38.                      />  
  39.             </s:else>   
  40.               
  41.             <input type="hidden" id="view.thisPage" value="<s:property value='view.currentPage' />" />  
  42.             <s:hidden id="view.totalPages" name="view.totalPages"></s:hidden>   
  43.             <s:hidden id="view.ascDesc" name="view.ascDesc"></s:hidden>   
  44.             <s:hidden id="view.sortKey" name="view.sortKey"></s:hidden>  
  45.         </td>  
  46.         <td nowrap="nowrap"><span>页</span></td>  
  47.     </tr>  
  48. </table>  

 (2)在需要分页的页面中引入上述jsp文件

Java代码   收藏代码
  1. <s:include value="/WEB-INF/jsp/pageBottom.jsp">  
  2.                                 <s:param name="action">usercoupon.query</s:param>  
  3.                             </s:include>  

 注意:必须包含在form表单中

 

 

(3)在后台action中

Java代码   收藏代码
  1. public String execute() throws Exception {  
  2.         reserveCondition();  
  3.         int start = (Integer.parseInt(view.getCurrentPage()) - 1)  
  4.                 * view.getRecordsPerPage();  
  5.         int count = 0;  
  6.         DetachedCriteria clientVersionDC = DetachedCriteria  
  7.                 .forClass(User.class);  
  8.         condition(clientVersionDC);  
  9.         List list = new ArrayList();  
  10.         count = this.userService.listByDetachedCriteria(list,  
  11.                 clientVersionDC, start, view.getRecordsPerPage());  
  12.         view.setRecordList(list);  
  13.         queryResultList = new ArrayList();  
  14.         queryResultList.addAll(view.getRecordList());  
  15.   
  16.         view.setTotalRecords(count);  
  17.         int totalPages = PageUtil.getTotalPages(view.getTotalRecords(),  
  18.                 view.getRecordsPerPage());  
  19.         view.setTotalPages(String.valueOf(totalPages));  
  20.         return "list";  
  21.     }  

 

在js中声明方法时,要注意,左边是错误的

 

相关文章
|
8月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
396 1
|
8月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
923 0
|
8月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
730 1
|
9月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
556 1
|
9月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
958 65
|
10月前
|
缓存 NoSQL Java
Java Web 从入门到精通之苍穹外卖项目实战技巧
本项目为JavaWeb综合实战案例——苍穹外卖系统,涵盖Spring Boot 3、Spring Cloud Alibaba、Vue 3等主流技术栈,涉及用户认证、订单处理、Redis缓存、分布式事务、系统监控及Docker部署等核心功能,助你掌握企业级项目开发全流程。
977 0
|
10月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
822 0
|
12月前
|
SQL Java 数据库连接
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
285 9
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
777 2
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
4689 5