`

ECSide内存分页

    博客分类:
  • java
阅读更多

将您将要展现的列表的数据集合(Collection),放入request/pagecontext/session内(使用setAttribute方法.这个工作可以在action/servlet里完成,也可以在jsp页面内完成),然后页面跳转到使用ECSide标签的jsp页面,此时ECSide就可以帮助您展现出所需要的列表.

一个简单的流程通常是这样的.

1 客户端请求action/servlet(如 http://10.195.129.101/test/userlist.do)
2 action接受到请求后,调用相应的BO/dao,执行取列表数据的方法.
3 取得数据后(通常是一个vo/map的list),将数据放入request内(使用requset.setAttribute(key,value)方法.)
4 将请求forward到使用ECSide标签的jsp页面.
5 ECSide将展现出列表.

  知道了原理,那么让我们一起来完成一个快速而简单的例子吧.现在有一张用户信息表,如下

表名称: USER_INFO(用户信息表)
字段:
    USERID   (用户编号)
    USERNAME (用户名)
    PASSWD   (密码)
    USERROLE (角色) 0 被锁定  1 普通  2 高级 3 管理员 4超级管理员
    REGDATE  (注册日期)
    EMAIL    (EMAIL)
    GENDER   (性别) 0 未知 1 男 2女
    MEMO     (备注)

h2db的建表脚本如下:

create table USER_INFO (
    USERID int not null identity,
    USERNAME varchar(80) not null,
    PASSWD varchar(255) not null,
    USERROLE varchar(10) default 1,
    REGDATE varchar(20) ,
    EMAIL varchar(128) ,
    GENDER varchar(2) default 0,
    MEMO varchar(1024)  ,
    constraint PK_USER_INFO primary key (USERID)
);

对应VO:

public class UserInfo {
 private Integer userId;
 private String userName;
 private String passwd;
 private String userRole;
 private String regDate;
 private String email;
 private String gender;
 private String memo;
 
 /* 略去getter setter方法 */

}
  对应DAO如下(假设DAO里只有一个方法,取得全部的用户信息,返回的是VO的List):

public class UserDAO extends BaseDAO  {

 public List getAllUsers(){
  StringBuffer bufSql = new StringBuffer("SELECT * FROM USER_INFO WHERE 1=1");
  
  Connection conn=null;
  PreparedStatement pstmt = null;
  ResultSet rest = null;

  List allUsers=null;

  try {
   conn = getConnection();
   pstmt = ConnectionUtils.prepareStatement(conn,bufSql.toString());
   rest = pstmt.executeQuery();
   allUsers=new ArrayList();
   UserVO userVO=null;
   while (rest.next()) {
    userVO=new UserVO();
    /* 略去将ResultSet结果放入VO的过程 */
    allUsers.add(userVO);
   }
  } catch (Exception e) {
   allUsers=null;
  }finally{
   close(rest, pstmt, conn);
  }  
  return allUsers;
 }

}


该简单例子假设该表数据量不大:500以内,采用ECSide的java内存分页技术

由于此例子实在简单,所以略去BO层.

action(DispatchActionSupport)代码如下:


public class MyTestAction extends DispatchAction {

 // java内存分页
 public ActionForward getAllUsers(ActionMapping mapping, ActionForm form,
 HttpServletRequest request, HttpServletResponse response)
 throws Exception {

  // 取得DAO,这里是从spring上下文中取得指定DAO,略去spring相关代码
  UserDAO userDAO=(UserDAO)getBean("userDAO");

  List allUsers = userDAO.getAllUsers();

//将结果集合放入request内,记住键名"allUsers".
  request.setAttribute("allUsers", allUsers);

 
  //forward到列表展现页面
  return mapping.findForward("userlistPage");

 }
}

 

访问该action的URL为
http://localhost:8080/ecsdemo/simpledemo.do?actionMethod=getAllUsers

jsp页面:
引入标签声明

<%@ taglib uri="http://www.ecside.org" prefix="ec" %>


通常jsp页面内取得应用上下文是必须的.

<%
String webapp=request.getContextPath();
%>


引入ECSide必要的css js

<link rel="stylesheet" type="text/css" href="<%=webapp%>/common/css/ECSide_style.css" />
<script type="text/javascript" src="<%=webapp%>/common/js/prototype_mini.js" ></script> 
<script type="text/javascript" src="<%=webapp%>/common/js/ECSide.js" ></script>


ECSide的标签,也是展现列表最关键的环节:


<ec:table items="allUsers" var="user"
retrieveRowsCallback="process"
action="${pageContext.request.contextPath}/simpledemo.do?actionMethod=getAllUsers"
title="用户列表"

width="100%"
classic="true"
>
<ec:row>
 <ec:column width="50" property="_0" title="序号" value="${GLOBALROWCOUNT}" />
 <ec:column width="80" property="userRole" title="角色"   />
 <ec:column     property="userName" title="用户名" />
 <ec:column width="100" property="passwd" title="密码"  />
 <ec:column width="120" property="email" title="电子信箱" />
 <ec:column width="70" property="gender" title="性别"  />
</ec:row>
</ec:table> 


  <ec:table> ECSide的主标签,可以理解为 html里的table标签,items指明列表集合在request的属性表里的键名, var指明迭代列表集合时,单条记录所用的变量名.此处类似jstl里的c:forEach标签.
retrieveRowsCallback="process"  指明采用ECSide的java内存分页技术.action指明翻页排序等操作时,所要调用的action的url,在这里你可以继续使用展现列表所使用的action
title="用户列表"  列表的标题
width="100%"  列表的宽度
classic="true"  使用传统方式列表

<ec:row> 行标签,可以理解为类似html里的tr标签

<ec:column> 列标签,可以理解为类似html里的td标签

width列的宽度, 类似td的 width属性

property 该列所要显示的数据在VO中对应的属性字段的名字(如果每条数据是存放在VO里的话),或MAP里对应的key的名字(如果每条数据是存放在MAP里的话)
title 表头中该列所要显示的名称
value 该列所要显示的内容.当你要显示的内容默认不是VO/MAP里的值的时候,你才需要使用value属性,为该列手动的指定一个值.
${GLOBALROWCOUNT}为ECSide内置的一个特殊变量,表示的数据所在的行号,针对全部数据而言,${ROWCOUNT}是针对当前页面而言.

分享到:
评论

相关推荐

    分页组件ECSIDE文档

    ### 分页组件ECSIDE文档知识点详述 #### 一、ECSIDE组件概述与功能实现 **ECSIDE**,作为一款专为Web应用程序设计的分页组件,其核心功能在于提供高效、灵活的数据展示解决方案。该组件源于**eXtremeComponents**...

    Linux内存分页机制原理

    ### Linux内存分页机制原理详解 #### 一、引言 在现代操作系统中,内存管理是确保系统稳定性和性能的关键技术之一。Linux作为一款广泛使用的开源操作系统,其内存管理机制非常成熟且高效。本文旨在深入解析Linux...

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

    【ECSide数据库分页、排序与过滤详解】 ECSide是一个用于Web应用程序的数据展示工具,它提供了便捷的方式来实现数据库中的数据分页、排序和过滤(简称RSF)功能。对于初学者而言,理解ECSide的工作原理和使用方法...

    JAVA 大数据 ecside 分页 算法

    Eclipse Collections(简称ecside)是一个高性能、低开销的Java集合框架,它提供了一些高级功能,如分页算法,这对于处理大规模数据流非常有用。在这个主题中,我们将深入探讨如何利用Java和ecside进行大数据的分页...

    02内存分页处理(done).zip

    java内存分页 内存分页工具类 * 使用场景:多个查询结果组合后分页的情况 * 1、endNum置为上限,查分页(最大限度可查) * 2、不分页查询,用上限判断(超过上限给提示不能查) * 注意:需要分页的全量数据要...

    操作系统内存分页机制的实现

    操作系统内存分页机制是现代计算机系统中用于管理内存的关键技术之一。它将物理内存分割成固定大小的块,称为页,然后将这些页映射到进程的虚拟地址空间中的页框,实现虚拟地址到物理地址的转换。在这个过程中,VC++...

    内存分页管理

    模拟内存分页,从制定的文件中读取内容并分页,可以自由选择查看的页码,增加或编辑内容等等。。。。。。。

    02内存分页处理(done)_02内存分页处理_routet3t_预测_

    内存字节占用日志监控:用于内存分页等大对象场景预测,防止堆栈溢出; * 内存分页工具类 * 使用场景:多个查询结果组合后分页的情况 * 1、endNum置为上限,查分页(最大限度可查) * 2、不分页查询,用上限判断...

    80386内存分页机制

    ### 80386内存分页机制详解 #### 一、存储器分页管理机制 80386作为一款高性能的微处理器,引入了一系列先进的特性,其中内存分页管理机制是它的一个亮点。这一机制能够有效地实现线性地址到物理地址的转换,为...

    C++的进程调度以及内存分页管理模拟程序

    内存分页是现代操作系统中广泛使用的虚拟内存管理技术。它将物理内存划分为固定大小的块,称为页,同时将进程的逻辑地址空间也划分为相同大小的页。这种划分允许操作系统将进程的部分存储在磁盘上的交换空间,从而...

    QT模拟OS内存分页系统

    QT模拟OS内存分页系统

    Ext解决题目(内存分页+导出Excel).rar

    在这个"Ext解决题目(内存分页+导出Excel).rar"中,我们将讨论两个关键主题:内存分页和导出Excel。 内存分页是处理大量数据时常用的一种优化技术。在Web应用中,如果一次性加载所有数据,可能会消耗大量内存,导致...

    Ext解决题目(内存分页+导出Excel)

    本主题主要关注两个关键功能:内存分页和导出Excel。 内存分页是处理大量数据时的一种策略,尤其是在Web应用中,由于HTTP请求的限制,一次性加载所有数据并不实际。内存分页允许用户只加载屏幕可见的数据,从而提高...

    操作系统 linux 请求分页 模拟内存管理实验报告java(内含源码)

    在本实验报告中,我们将重点讨论Linux操作系统中的请求分页内存管理,这是一个模拟实验,旨在帮助理解内存管理的基本概念和技术。 请求分页是现代操作系统中广泛采用的一种内存管理策略,它允许进程在需要时请求页...

    C#编写的模拟操作系统虚拟内存分页请求管理

    本项目是用C#编程语言实现的一个模拟操作系统虚拟内存的分页请求管理器,它基于汤小丹等编著的《计算机操作系统》第三版中的算法流程。以下是对这个模拟系统的详细解释和相关知识点的展开。 1. **虚拟内存概念**:...

    根据Ecside ET 源码改变WEB JSP 分页标签

    ECSide是一款强大的开源Java Web开发工具,它提供了丰富的功能,包括对JSP页面的分页处理。本文将深入探讨ECSide中的ET源码如何实现分页,并讲解如何利用其支持的导出Excel和PDF功能,以及如何进行更改、添加和删除...

    Linux内存管理模拟器.rar_Linux C语言_二级页表模拟_内存分页管理_内存管理模拟_数学建模

    采用分页机制,使用二级页表,第一级为页目录,共有1024项,每个页目录项指向一个页表,每个页表项指向一个实际的物理页面,每个页表共有1024个页表项。假设页目录和页表不占用内存空间。 系统中还有一个交换设备,...

    实现虚拟内存的分页系统, 模拟进程调度过中的内存管理

    虚拟内存的分页系统是现代操作系统中内存管理的关键机制,它允许程序在有限的物理内存资源上运行,通过将内存地址空间划分为固定大小的页,并映射到物理内存的相应位置,实现了逻辑地址到物理地址的转换。...

    mybatis 分页代码

    本知识点主要探讨的是如何在MyBatis中实现分页查询,这是一种常见的需求,特别是在处理大数据量时,避免一次性加载所有数据导致内存溢出。 在传统的数据库操作中,分页通常涉及到LIMIT和OFFSET关键字(在MySQL中)...

    windows分页机制

    网上找的资料,介绍windows内存分页相关知识

Global site tag (gtag.js) - Google Analytics