Cwin的全称为Core Window,开发基于JDK1.5。对于已有系统,Cwin是一个便捷实用的CRUD插件。可以嵌入在任何支持Servlet的Java Web应用中。对于中小型应用而言,Cwin可作为系统的基础架构。Cwin可以大大减少简单繁杂的劳动,从而将精力放在核心业务的开发上来。因为使用Cwin完成功能将不需要编写任何的代码(XML配置除外)。
Cwin的核心概念是Window。那么,什么是一个Window呢?比如一个User的查询与编辑功能就可以配置为一个Window。这个Window将可以完成User的CURD操作。包含查询、排序、分页展示、验证等等完备的功能。
Cwin的目的,为了使Java的Web开发人员能从这些简单繁杂的劳动中解脱出来。比如单表操作、简单的基础数据维护操作、数据查询操作。我们都知道这些功能都很简单,但是麻雀虽小,五脏(CRUD四个操作、加上验证、分页、查询等等)俱全,这些工作是系统中是很让人头疼的部分,因为大部分代码都在COPY或者使用代码生成器生成。开发人员哼哧哼哧弄完之后还得对功能进行各种测试。而Cwin力图使这些操作完全地自动化。事实上,现在Cwin已经可以在不写入任何代码的情况下自动配置好这些功能。
另外:Cwin也有一些不错的特性:
1. 使用简单:表与字段定义在一个XML文件中。通过ID访问。
2. 功能全面:对HTML控件全面的支持:Cwin支持大部分的HTML控件配置与在线编辑器(fckeditor)的配置、文件上传。
3. 自动的输入检查。验证条件可以比较灵活地配置。即使您不设置任何的条件Cwin也会根据数据库的字段属性进行输入检查。
4.
Cwin多种的列输出配置,hidden(面对长字段可以隐藏不在表格中展示,因为表格装不下那么长),pop(面对长字段,可以让经以POP方式跳出
来),link:可以通过此列链接到其它的功能,这个功能非常地实用。None:在表格中不显示此列,比如主键列。
5. 灵活性:Cwin可以使用URL对每一个页面单独进行引用。Cwin支持动态URL的配置。这样Cwin中配置的Window也可以通过URL得以嵌入在其实比较复杂的功能中。
6. 贴心小特点:
A. 对于Value-Desc方式的值。比如用户表的用户类型字段。Cwin在表格展示时自动展示为Desc而不是得对照数据字典才能慬的Value。
B. Window可以动态接收参数作为window的条件与默认值。比如我们现在有一个Window:user。现在我需要有一个功能,按用户类型编辑用户。就可以加入参数 类似userType=value。即可。
C. Cwin支持系统变量的插入。默认的系统变量只有一个:_CWIN_SYS_TIME(系统时间)。我们在Window user中可以使用到他。因为user的CreateTime需要记录系统时间。modifyTime也需要记录修改时间。如果用户有其它的系统变量,比如操作人。那么用户将需要扩展Cwin的一个类。覆盖某个方法即可。
D. Cwin统一地管理各种与此下拉列表与HTML控件。从此不必在各个页面之间COPY下拉列表了。也不必COPY各个字段的验证代码了。使用代码类似于:
<select name="userType" ref="user.type">
注意ref属性。
E. 如果您使用Cwin。那么Cwin的配置文件可以作为一份不错的数据库文档。因为修改的每一个字段都必须修改配置文件才能得到体现。这样,这份文档总是最新的!
不多浪费时间。直接上配置文件,有经验的大大们一看这配置文件应该都知道是啥意思了。
一个table配置:
<table id="user_demo">
<field name="id" desc="ID" validType="int" isKey="true">
<input type="hidden"/>
</field>
<field name="login_name" desc="登录名" validType="signName" order="login_name" cond="like">
<output dispMode="link" href="cwin?_CWIN_ID=user_demo&_CWIN_ACTION=show&id=[id]" target="_blank"/>
<comment>请输入正确的登录名</comment>
</field>
<field name="email" desc="电子信箱" validType="email" order="email" cond="like">
<comment>请输入正确的电子信箱</comment>
</field>
<field name="password" desc="密码" minLen="6" maxLen="20">
<comment>请输入符合要求的密码,6--20位长</comment>
</field>
<field name="type" desc="用户类型">
<input type="select"/>
<options>
<option desc="管理员" value="1"/>
<option desc="普通用户" value="0"/>
</options>
</field>
<field name="create_time" desc="创建时间" validType="date">
<comment>请输入正确的时间</comment>
</field>
<field name="intro" desc="个人说明" general="false">
<input type="fckeditor" cols="870" rows="195"/>
<output dispMode="pop"/>
</field>
</table>
不用紧张,这个配置文件不需要您一行行来写的,Cwin会帮您生成基础配置。
一个window的配置:
<window id="user_demo_1" table="user_demo" type="popular" function="query,add,update">
<desc>用户管理中心</desc>
<fields>
<field name="id"/>
<field name="login_name"/>
<field name="type"/>
<field name="create_time"/>
<field name="intro"/>
</fields>
<grid pageSize="20"/>
<extra>
<output desc="blog" dispMode="link" href="http://sunarrow.iteye.com/"/>
</extra>
<limits>
<limit name="type" value="0"/>
</limits>
</window>
一个SQL查询Window的配置:
<window id="user_demo_and_ex" type="grid" function="query">
<desc>用户以及他的扩展信息(SQL查询)</desc>
<fields>
<field ref="user_demo.id" isKey="true" fullName="u.id"/>
<field ref="user_demo.login_name" cond="like" fullName="u.login_name"/>
<field ref="user_demo.type" order="u.type"/>
<field ref="user_demo.email"/>
<field ref="user_demo.intro"/>
<field ref="user_demo_ex.real_name" cond="like" fullName="ex.real_name"/>
<field ref="user_demo_ex.tel"/>
<field ref="user_demo_ex.address"/>
<field ref="user_demo_ex.postcode"/>
</fields>
<extra>
<output desc="BLOG" title="请帮忙多发些评论啊!" dispMode="link" href="http://sunarrow.iteye.com?id=[id]"/>
</extra>
<sql>select u.id,u.login_name,u.email,u.type,u.intro,ex.real_name,ex.tel,ex.address,ex.postcode from user_demo u left join user_demo_ex ex on (u.id = ex.id)</sql>
</window>
有关详细的说明请下载Cwin,其中包含了DEMO与详细的用户手册。
或许可以到
作者的BLOG
了解信息。
有建议与问题欢迎交流!
分享到:
相关推荐
【Dartou_cwin5: ActionScript3.0框架】是一个由深圳市大头互动文化传播有限公司开发的开源框架,专门针对ActionScript3.0编程语言设计。这个框架旨在提高开发效率,提供一套完整的解决方案,用于创建丰富的互联网...
在VC++编程环境中,"VC继承于CWin的透明时钟"是指利用MFC(Microsoft Foundation Classes)库中的CWin类进行派生,创建一个具有透明效果的时钟控件。这种技术通常用于构建用户界面,使时钟可以无缝融入到其他图形...
在Microsoft Visual C++ (VC++) 开发环境中,创建一个继承自CWin的实时曲线控件是一种常见的需求,尤其是在开发涉及到图形界面和数据可视化的应用程序时。CWin是MFC(Microsoft Foundation Classes)库中的基类,它...
Yah3cWin 中山大学东校区(位于 HEMC 高等教育中心)Windows 上的 Yah3c 客户端项目背景这是一个很早的项目,2013年7月开始。当时我想对SYSU Yah3c客户端做一些改进。 众所周知,Yah3c客户端是中山大学学生永远不会...
本文将深入探讨如何利用C++和MFC来创建一个自定义的列表框控件——CWinListBox,这是一个从CWin派生出来的类。 CWinListBox是Windows GUI编程中的一个重要组成部分,它允许用户在列表中选择一个或多个项目。在MFC中...
而对于非敏感数据,简单的方法如查询字符串或隐藏字段就足够了。 总结来说,弹出窗口间的值传递是Web开发中的常见需求,涉及到客户端和服务器端的交互。理解并熟练掌握这些技术对于提升用户体验和优化应用程序至关...
- **特点**:Ghost的特点在于它是以硬盘的扇区为单位进行备份与还原的,这意味着它可以完整地复制硬盘的所有信息,包括文件、设置、磁盘碎片等,而非简单的数据复制。 - **备份方式**:支持将分区或硬盘备份为扩展名...
local dllKernel32 = CWin32Dll( "Kernel32.dll" ); local iRet = dllKernel32.DeleteFileA( "c:/1.zip" ); print( iRet ); } // Demo2. 显示消息对话框 { local dllUser32 = CWin32Dll( "user32.dll" ); ...
在Windows编程领域,Win32 API是一个至关重要的接口,它提供了与操作系统进行交互的基本功能,包括创建窗口、处理消息等。对于C++开发者来说,直接使用Win32 API编写窗口程序时,通常需要反复编写一些基础的代码,如...
整套控件完全脱离MFC类,有自己的:CList、CString等组件类,所有控件由CWin这个透明窗体类派生,CWin派生CForm和CCtrl类,在CCtrl类上派生各个透明控件,有:CBtt(按钮控件)、CCheckBox、CRadioBox、CPanel、...
* @author cwin5 */ public class Test() { // ... } ``` 2. **公有方法注释**:使用 Javadoc 风格的注释,包含方法参数说明。例如: ```actionscript /** * 设置数字 * @param num 要设置的数字 */ ...
if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight) cwin.height = cwin.contentDocument.body.offsetHeight + 20; else if (cwin.Document && cwin.Document.body.scrollHeight) cwin....
在计算机硬件系统中,驱动程序是连接操作系统与硬件设备的关键软件,它使得操作系统能够识别并控制特定的硬件设备,如扫描仪。明基8180C扫描仪是一款可能用于办公或家庭环境的光学设备,能将纸质文档或图片转换为...
在MFC中,通常使用资源编辑器来设计对话框和菜单,并将控件与类成员函数关联起来。 3. **添加类和数据结构**: - 项目中添加了一个新的类,该类包含了成员变量和函数。这些变量和函数可能用于存储和操作棋局状态,...
一键GHOST硬盘版是一款常用的系统备份与恢复工具,尤其适合对电脑操作不太熟悉的用户。它提供了简单易用的界面和自动化流程,使得系统备份和恢复变得轻松快捷。下面将详细介绍如何使用一键GHOST硬盘版进行系统备份和...
当你有一个错误代码,并想获取与之对应的详细错误信息时,`FormatMessage`就能派上用场。下面是一个简单的步骤来使用这个函数: 1. **包含必要的头文件**:在C++代码中,你需要包含`windows.h`头文件,因为它包含了...
从描述I2C协议开始,到I2C设备驱动架构,特定EEPROM设备AT24c08的datasheet,最后详细描述驱动里的各个函数以及相对应的调试过程!
4. CWin32Window.cpp:可能与Windows窗口对象相关,用于创建和管理Winamp插件的窗口。 5. docking.cpp:可能涉及插件在Winamp界面中的停靠和布局逻辑。 6. wafuncs.cpp:可能包含了Winamp API的函数实现,这些API...