论坛首页 Java企业应用论坛

Cwin1.0:从此告别简单烦人的CURD与查询、分页、排序!!

浏览 3351 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-14  

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 了解信息。

 

有建议与问题欢迎交流!

   发表时间:2008-10-15  
如果spring + hibernate的工程用cwin后会是什么效果
0 请登录后投票
   发表时间:2008-10-15  
没有影响-因为Cwin只是使用了Servlet,不冲突的
如果Cwin与Spring共享数据源,理论上讲Spring将无法管理Cwin的事务。但也许会有问题---没测试过啊,如果不与SPRING数据源,则不会有任何影响

不过发现Cwin这个版本(pv1)在Oracle下跑不通:序列建不成功,并且显示不出结果 --- 今天给别人做个演示,结果灰溜溜地回来了---
0 请登录后投票
   发表时间:2008-10-15  
重新发布了一个版本,修复了在Oracle下无法建序列与显示不出结果的BUG。
同时在发布包中包含了源码。
0 请登录后投票
   发表时间:2008-10-17  
没有影响-因为Cwin只是使用了Servlet,不冲突的 ~~~

但是Hibernate的事务是不知道Cwin在修改db的
0 请登录后投票
   发表时间:2008-10-17  
d8111 写道

但是Hibernate的事务是不知道Cwin在修改db的

说得对,这对Hibernate的缓存会有问题,因为Cwin不会通知Hibernate刷新缓存。--这还真是个问题。。
Hibernate无法管理Cwin的事务,Cwin负责完成的DB操作有自己的事务控制方式。其它事务控制器是无法管理的。
0 请登录后投票
   发表时间:2008-11-27  
刚发现好像没有非空验证和刷新有重复提交的问题.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics