ecside 数据库层分页解决方案

 

       项目中使用到了ecside,不过没有使用到分页技术,每次都是吧数据库所有的记录给查出来,放到request对象中,然后ecside展示,前台的ecside拿到了request对象中的数据list,根据页面上用户选择的每页显示巨鹿数目,计算出一共多少页,比如记录有10页,当前是第一页,你点第二页,ecside也是在去查一下数据库,把所有的记录找出来,根据每页显示的记录数目,计算出第二页显示的数据记录的起止位置,然后在页面上显示,当数据量巨大的时候,不使用分页就会出现OOM的问题,以下是ecside基于数据库分页的一个简单实现,每次按需取数据,不管记录再多,也不会OOM

 

 

     准备工作:

 

 

1. ecsise 2.0 相关jar包+Mysql 数据库环境+struts

2.在mysql 中建立一个表

CREATE TABLE `user` (                
          `name` varchar(20) NOT NULL,       
          `age` varchar(20) NOT NULL,        
          `sex` char(30) DEFAULT NULL,       
          `pw` char(30) DEFAULT NULL,        
          `time` datetime DEFAULT NULL       
        ) ENGINE=InnoDB DEFAULT CHARSET=gbk 

 

目标:user表中有11条数据,使用数据库层分页技术,每次都按需取数据

 

 

分析:ecside展示数据的时候需要吧记录的list放到request中,讲记录的总数也放到request对象中,因此,我们只需要在页面上得到,当前的页码,用户选择的页面上记录显示的数目,在数据库层使用mysql的 limit 就可以构造出分页sql了

 

 

解决方案:(关键步骤)

 

a.使用 RequestUtil.getPageNo(request) 得到当前的页码

b.使用 RequestUtil.getCurrentRowsDisplayed(request) 得到 页面上显示的记录的数目

 

MYSql 的limit的用法:

 

在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

        LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15

//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

//如果只给定一个参数,它表示返回最大的记录行数目:
mysql> SELECT * FROM table LIMIT 5;     //检索前 5 个记录行

//换句话说,LIMIT n 等价于 LIMIT 0,n。

 

 

c. 使用 select * from user order by time desc limit 2,4 使用类似的sql得到分页记录,如果是oracle可以使用一个子查询,并使用rownum

 

d. 构造结果对象 ResultObject

 

package cn.com.xinli.bean;
import java.io.Serializable;
import java.util.ArrayList;
public class ResultObject implements Serializable
{
	/**
	 * 分页查询结果集对象
	 * count 不分页查询所有的结果集的数目(从数据库select count(1) from user)
	 * list 页面上需要显示的分页后的记录list
	 */
	
	int count;
	
	ArrayList list=new ArrayList ();

	public int getCount()
	{
		return count;
	}

	public void setCount(int count)
	{
		this.count = count;
	}

	public ArrayList getList()
	{
		return list;
	}

	public void setList(ArrayList list)
	{
		this.list = list;
	}
}

 

 

e.告诉ecside 总的记录数目,和需要展示的 数据的list

  request.setAttribute("totalRows",ro.getCount()); 
  request.setAttribute("recordList",ro.getList()); 

 

 

 

f. 在页面上 ectable 中使用 retrieveRowsCallback="limit" 代表分页机制是 数据库层分页

 

 

完整的实现见附件,你只需要

1.修改 conf.properties 中的数据库连接参数

2.建立一个user表

3.部署在tomcat中,访问 http://localhost:9090/ecside/test.jsp

 

效果:

 

 

 

产业园区运营负责人如何实现创新资源的系统化配置?.docx 产业园区运营负责人如何实现创新资源的系统化配置? 立即下载

相关推荐

高校技术转移办公室人员需要哪些材料完成成果转化项目审核?.docx

高校技术转移办公室人员需要哪些材料完成成果转化项目审核?

ECSide基于数据库的分页、排序、过滤的实现

首先ecside展现列表、排序、过滤(该三种操作以下简称为 RSF )的实现原理完全和原版EC一样, 如果您对原版EC的retrieveRowsCallback、sortRowsCallback、filterRowsCallback 非常熟悉,那么可以忽略此文. 先来简单介绍一下RSF操作方式. ecside对数据的展现操作有三种:分页展现,按列排序(目前只支持单列),按列过滤(支持多列联合过滤)

Mike.Fang 的专栏 2861

状态估计【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)

【状态估计】【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)内容概要:本文主要介绍了基于变频控制的多相交错LLC谐振变换器闭环仿真研究,重点探讨了多相交错并联技术在降低输出电流纹波和提升功率容量方面的优势,分析了交错角对纹波抵消的影响以及均流问题的成因。针对变频控制带来的非线性特性,文章采用扩展描述函数(EDF)建立小信号模型,用于指导PID控制器的设计,并验证其在稳态和动态工况下的控制性能。通过Simulink仿真平台对闭环系统进行建模与测试,考察了启动过程、负载阶跃响应及频率调节的平滑性,结果表明所设计的控制系统具有良好的稳态精度和动态响应能力。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生及从事电源系统研发的工程技术人员。; 使用场景及目标:①掌握多相交错LLC谐振变换器的工作原理与建模方法;②学习变频控制下非线性系统的建模与PID环路设计技巧;③应用于高效率、低纹波开关电源的仿真设计与优化。; 阅读建议:建议结合文中提供的仿真模型与参数设置进行实践操作,重点关注EDF建模过程与控制器参数整定方法,通过对比不同交错角下的仿真结果加深对纹波抑制机理的理解。

[ECSide文档] ECSide基于数据库的分页、排序、过滤的实现

首先ecside展现列表、排序、过滤(该三种操作以下简称为 RSF )的实现原理完全和原版EC一样,  如果您对原版EC的retrieveRowsCallback、sortRowsCallback、filterRowsCallback 非常熟悉,那么可以忽略此文.  先来简单介绍一下RSF操作方式.  ecside对数据的展现操作有三种:分页展现,按列排序(目前只支持单列),按列过滤(支

LEE_ZCF 1203

论文复现基于物理信息神经网络预测2D3D非稳态温度场及热源(Python代码实现)

内容概要:本文详细介绍了基于物理信息神经网络(PINN)预测2D和3D非稳态温度场及热源的Python代码实现,旨在复现相关科研论文。该方法将物理定律嵌入神经网络结构中,利用偏微分方程描述传热过程,在无需大量标注数据的前提下,求解复杂的非稳态传热问题,实现对温度场时空演化和内部热源分布的高精度预测。文中系统阐述了PINN的模型构建原理、损失函数设计策略(包含初始条件、边界条件与控制方程的物理约束)、网络训练流程以及数值实验结果,充分展示了其在科学计算与工程仿真中的强大潜力与良好泛化能力。; 适合人群:具备一定Python编程基础和深度学习理论知识,熟悉偏微分方程与传热学基本概念,对科学计算、物理信息建模、智能仿真等方向感兴趣的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于复现并深入理解PINN在非稳态热传导问题中的具体应用;②为从事热管理、材料科学、能源系统、航空航天等领域的研究人员提供可扩展、可定制的开源代码框架;③辅助高校教学与科研实践,帮助学生掌握物理信息驱动的机器学习建模方法及其在实际工程问题中的实现路径。; 阅读建议:建议读者结合文中提供的完整代码与详细注释,使用主流深度学习框架(如TensorFlow或PyTorch)进行动手实践,重点理解物理约束如何通过损失项融入网络训练过程,并尝试在不同几何构型、边界条件或热源形式下进行模型验证,以深入掌握PINN的设计思想与泛化机制。

【扫地机器人测试】

本测试方案旨在系统性评估扫地机器人的核心功能、性能指标、可靠性及用户体验,验证产品是否符合设计规范、行业标准及市场需求。通过多维度、全场景的测试,精准定位产品缺陷与优化空间,为产品迭代提供数据支撑,确保上市产品的质量稳定性与用户满意度。

xuhuaiyaun的博客 1374

ecside展现列表、排序、过滤

首先ecside展现列表、排序、过滤(该三种操作以下简称为 RSF )的实现原理完全和原版EC一样, 如果您对原版EC的retrieveRowsCallback、sortRowsCallback、filterRowsCallback 非常熟悉,那么可以忽略此文. 先来简单介绍一下RSF操作方式. ecside对数据的展现操作有三种:分页展现,按列排序(目前只支持单列),按列过滤(支持多列联合过滤)

许海潮的专栏 1053

Pointnet++环境配置+复现

深度学习点云经典网络Pointnet++

weixin_58663121的博客 8075

模拟项目一(1)&对ECSide的基本认识和工作原理的理解

对ECSide的基本认识和工作原理: ECSide是有一个基于jsp tag的开源列表组件。 简单的说,它就是一组可以帮助你快速实现强大的列表的jsp标签。 它的工作原理: 1、 Ecside可以展现列表(R,其实是分页),排序(S,其实是orderby),过滤(F 其实是where)。 2、 他的实现是通过两种方式来实现的。一种是基于Java的collection层。一种是基于数据库层

良之才的专栏 656

Overleaf-Latex-Elsevier-图、表、参考文献标题及引用、伪代码写法(绝对详细直观且易懂)

overleaf爱思唯尔模板踩过的一些坑以及解决办法

2403_87584552的博客 5851

多目标跟踪中使用trackeval评估dancetrack运行结果

trackeval使用

qq_46144849的博客 1783

ECSide入门draft (update 2007-05-01)

ECSide入门 注:这个入门并不是最终版,在未来几天内,我会不停的对它进行编辑.回大连后,我会逐步向WIKI上迁移.这个只是一个临时的草稿. ECSide是有一个基于jsp tag的开源列表组件. 简单的说,它就是一组可以帮助你快速实现强大的列表的jsp标签. 它的工作原理很简单. 您将要展现的列表的数据集合(Collection),放入request/pageco...

大城小胖的大城 194

GOM引擎单机传奇架设全攻略——从DBC2000配置到登录器生成

本文详细解析了使用GOM引擎架设单机传奇的完整流程,从DBC2000的安装配置、服务端部署、引擎控制器设置,到登录器生成与客户端补丁放置。文章重点解决了单机架设中的常见问题,如数据库路径配置、IP地址设置及Key.lic文件处理,旨在帮助玩家快速搭建稳定的个人游戏环境,体验GM乐趣。

weixin_28318011的博客 632

ECSIDE标签

ECSIDE标签之<ec:table>标签的属性说明与使用 EC side是基于jsp tag的开源列表组件,可以帮助我们快速实现墙大的列表的jsp标签。EC side可以展现列表(分页)、排序、过滤。 工作原理很简单: 先将要展现的列表的数据集合(Collection),放入request或者pagecontext或者...

weixin_30918415的博客 220

Rapid SCADA MQTT

一、配置RapidSCADA 1、准备KpMqtt.dll、Jint.dll库文件,从网盘下载。 2、将以上两个文件拷贝到SCADA安装目录的Comm/KP目录下,如下: C:\SCADA\ScadaComm\KP 3、新建SCADA项目 4、新建Line 5、新建Device 6、拷贝Config目录下的KpMqtt_001.xml文件、KpMqtt_Job.js文件到项目Comm\Config下,如下示例链接 C:\SCADA\Projects\MQTTProject\Instances\Defau

mumanquan1的博客 3007

【工业相机】【深度4】线扫描相机 - 选型实践

前言: 在工业相机的深度应用的前三节里面,针对工业相机的选型、参数、应用计算等做了一些说明。期中,在深度3里面,在说明工业相机在速度场景下的应用的时候,专门开了一节介绍线扫描相机行频速度的计算公式和镜头的选型的大致说明,感觉说的还是不够透彻,切应用举例也不充分,这里特别开一个章节,基于线扫描相机的特点对比面阵相机的特点进行比较详细的说明,尤其对线扫描相机的选型实践,尤其是线扫描相机的分辨率选择计算、行频选择计算进行了充分的说明和计算说明,希望能够给用到线扫描工业相机的同学给予一定的参考: 阐述: 在编

山云的专栏 2万+

ecside入门

ecside入门 ECSide是有一个基于jsp tag的开源列表组件. 简单的说,它就是一组可以帮助你快速实现强大的列表的jsp标签. 它的工作原理很简单. 您将要展现的列表的数据集合(Collection),放入request/pagecontext/session内(使用setAttribute方法.这个工作可以在action/servl...

weixin_30498807的博客 137

高电压技术的面试内容整理(详细版本:57题)

涵盖了高电压技术的关键领域,包括气体放电的物理过程、液体和固体介质的绝缘特性、高压外绝缘的分类与特性、电气设备绝缘试验的方法与原理、电力系统的防雷保护措施,以及内部过电压的产生、影响与限制方法,为理解和应对高电压环境下的电气问题提供了系统的知识框架。通过深入探讨气体放电理论、介质极化与损耗、绝缘子的电气特性、绝缘试验技术、防雷策略以及内部过电压的管理。

weixin_44808274的博客 777

如何使用ecside列表组件构建列表

转自http://www.blogjava.net/allen-zhe/archive/2009/03/09/246328.html,很好的一篇介绍ecside的文章。   说在前面的话: ECSide组件,一个功能丰富,简单易用的列表组件,套用圈子里的一句话:它可能不是最好的,但也许是你最需要的。感兴趣的同志们可以访问ECSide的圈子,里面的资源及文档都很丰富,不在这里做过多...

胡笨笨的成长轨迹 305

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ECSide FAQ 之 :展现列表(分页)、排序、过滤的问题

最近很多人都问我关于ecside展现列表、排序、过滤相关的问题: 例如 "如何基于数据库操作" "为什么排序不好用" "为什么排序只是当前页" "为什么过滤只是当前页" 等等. 在这里我想通过该帖一并回答.如有说的不明白或者不对的地方欢迎大家回帖讨论. 首先ecside展现列表、排序、过滤(该三种操作以下简称为 RSF )的实现原理完全和原版EC一样, 如果你对原版EC的retriev...

大城小胖的大城 266

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ec table

首先ecside展现列表、排序、过滤(该三种操作以下简称为 RSF )的实现原理完全和原版EC一样, 如果您对原版EC的retrieveRowsCallback、sortRowsCallback、filterRowsCallback 非常熟悉,那么可以忽略此文. 先来简单介绍一下RSF操作方式. ecside对数据的展现操作有三种:分页展现,按列排序(目前只支持单列),按列过滤(支持多列联合过滤)

zhaoxiazheng的专栏 6067

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Ecside分页处理

/** * controller首先需要创建一个Limit Limit * 中设置了limit的totalRows总行数,同时设置了返回JSP页面的totalRows总行数 */ [code="java"]List opinions = superviseService.getSupervisOpinions(sup); int totalRows = StringU...

jc_dreaming2的博客 177
上一篇: 基于JAVA的ajax代理的研究实现
下一篇: struts2 整合 dwr
a8366
博客等级 码龄19年 10粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值