B/S三层架构在安全性、易部署方面有天然的优势,但是HTML简陋的form组件却难与丰富的桌面组件相提并论。于是RIA应运而生。
RIA的出现使得在B/S应用上实现传统C/S应用的复杂界面成为可能。ExtJS和flex都是奔着这一主题产生的。ExtJS采用开放的DOM模型,更为我所欣赏。
ExtJS实现了一套类似传统桌面组件库的,采用OOP和事件机制,具备可扩展性的组件集合。曾经编写桌面应用的朋友,看它的examples和API文档,可能会倍感亲切。但是Extjs也存在应用禁区:它的destory并不能解决IE下固有的内存泄漏问题。IE的内存泄漏是DOM元素与javascript存在未能释放的引用导致的,要杜绝这种引用存在现实上的困难。那么,有没有更简单易行的方法呢?
- 权衡再三,我们采用界面复用来绕开这个难题。基本思路是:
- 当需要建立一个界面(常见的grid或者form)时,首先查看索引是否已经在内存中缓存了同样的界面。
- 如果存在,则不再创建新的界面,而只是在旧的界面上进行数据刷新,并让它可见。
- 如果不存在,则建立新界面,并对它建立索引。
- 当关闭界面时,代替destory以hide,即仅仅是隐藏它而已。
采用上述规则之后,浏览器消耗的内存会随着新建立界面而增长,但会有一个上界——即所有可复用界面的最大集合。而不再象反复new->destory那样,少量但不断地消耗内存。
另一方面,RIA的编程对于曾经经历桌面界面开发人员可能熟悉,但这样的老程序员恐怕稀有了,有木有一种办法可以使用RIA,但却不需要为RIA的API细节所束缚呢?
有的,同样是上面那个界面复用的思路。但需要满足前提:界面的操作具备一致性。
想想看,对数据库表的CRUD不就是通用的操作么?而这种操作大致可以描述如下:
- 对一个或者多个表进行(联合)检索,允许自定义检索、排序条件。
- 检索结果分页显示在grid中。
- 在editorGrid中直接修改、增加、删除数据并保存。
- 在grid中选中一条,查看详细。
- 该条数据以tabPanel显示。
- tabPanel下包含了子表数据。
- 对子表数据重复以上展示和操作。
实现效果截图如下:
排序支持
检索支持:
editorGrid直接修改数据
相关推荐
WCF RIA Services+Mef+MVVM实现CRUD示例源码 实现了雇员的增删改查,雇员表(Employee)和部门表(Department)、雇员类型表 (EmployeeType)有外键关联,并和字典表(DataDict)有字典关系 示例采用技术说明: 1、...
django-crudbuilder, 在 Django 中,通用CRUD实现 crudbuilder在 Django 中使用 Django tables2列出对象的通用CRUD实现。文档https://django-crudbuilder.readthedocs.org/en/la
**JSP实现的CRUD操作详解** 在Web开发中,CRUD(Create, Read, Update, Delete)是最基本的数据操作,广泛应用于各种业务系统。本项目以JSP(JavaServer Pages)技术为核心,实现了对MySQL数据库的CRUD操作,旨在...
05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能...
在这个"JSF实现的CRUD例子 myeclipse"中,我们将探讨如何使用JSF和MyEclipse开发一个简单的CRUD(Create, Read, Update, Delete)应用,而无需连接到数据库。 首先,"first-java-server-faces-tutorial-en.pdf"可能...
本篇文章将聚焦于如何实现一个通用的CRUD功能,并利用jsonRPC技术来构建B/S架构(Browser/Server,即浏览器/服务器模式)中的通信桥梁。jsonRPC是一种轻量级的远程过程调用协议,常用于前后端交互,它允许服务器提供...
标题“VB实现的CRUD例子”表明这是一个使用Visual Basic (VB)编程语言创建的应用程序,主要功能是实现数据库操作的基本功能:创建(Create),读取(Read),更新(Update)和删除(Delete),简称CRUD。在数据库应用开发中...
WCF RIA Services+Mef+MVVM实现CRUD示例源码 实现了雇员的增删改查,雇员表(Employee)和部门表(Department)、雇员类型表 (EmployeeType)有外键关联,并和字典表(DataDict)有字典关系 示例采用技术说明: 1、...
在IT行业中,CRUD(Create, Read, Update, Delete)是数据库操作的四个基本功能,分别代表创建、读取、更新和删除数据。本案例主要介绍如何使用JSP(JavaServer Pages)技术来实现这些功能,这对于Web开发来说是基础...
SSM框架,全称Spring MVC + Spring + MyBatis,是Java Web开发中常见的三大组件集成框架,用于构建高效、灵活的Web应用程序。这个资源显然提供了一个完整的示例,演示了如何利用这些技术来实现对数据库中的实体进行...
自己写的一个JDBC通用DAO 有几点需要注意: 1.数据库命明目前只支持没下血杠命名(_) 2.表ID字段名取名有2种方式 (1)ID (2)TableName + ID 例如:user表 则取名为 id 或者 userid 因为没有用xml来映射表结构确定哪一个...
本示例主要介绍如何在MybatisPlus中利用其通用CRUD功能实现数据的插入操作。 首先,我们需要了解MybatisPlus的基本架构。MybatisPlus扩展了Mybatis的功能,提供了实体类与数据库表之间的映射,自动填充字段(如创建...
【标题】"使用EasyUI+Springmvc实现的CRUD"主要涵盖了两个核心技术——EasyUI和SpringMVC,它们在Web开发中的应用以及如何协同工作来完成数据的创建、读取、更新和删除操作。 EasyUI是一款基于jQuery的前端UI框架,...
在这个"通用CRUD源代码下载"中,我们重点讨论如何利用 MyBatis Plus 扩展来实现高效、简洁的 CRUD 操作。 MyBatis Plus 是 MyBatis 的一个扩展,它简化了 CRUD 操作,提供了大量默认的 CRUD 方法,避免了大量的模板...
在本教程中,我们将一起探索如何创建并运行你的第一个MyBatis程序,实现CRUD(Create, Read, Update, Delete)操作。这些基本操作是数据库管理的核心,对于任何应用程序来说都是必不可少的。 首先,我们需要理解...
在本案例中,“VUE实现静态数据的CRUD功能”指的是利用Vue.js创建一个能够进行创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)操作的应用。这种功能通常用于管理数据库中的数据,而在这个特定场景下,...
【ToEat.ly: CRUD w AJAX —— Express 后端,Underscore 模板】 `ToEat.ly` 是一个基于 `JavaScript` 开发的应用程序,它利用 `CRUD`(创建、读取、更新和删除)操作来管理数据,并通过 `AJAX` 技术实现前端与后端...
在本项目中,我们将深入探讨如何在SSM框架下实现Ajax的CRUD(Create、Read、Update、Delete)操作,并利用PageHelper进行分页查询。 首先,Spring框架作为基础,负责管理应用的bean和依赖注入。在配置文件中,我们...
在本教程中,我们将探讨如何使用 SpringMVC 实现基于 RESTful 风格的 CRUD(Create、Read、Update、Delete)操作。 **CRUD 操作概述** CRUD 操作是任何数据驱动应用的基础,它们分别代表创建新记录、读取现有记录、...