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与详细的用户手册。
有建议与问题欢迎交流!