`
sunarrow
  • 浏览: 18030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多

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

 

有建议与问题欢迎交流!

分享到:
评论
6 楼 hyw520110 2008-11-27  
刚发现好像没有非空验证和刷新有重复提交的问题.
5 楼 sunarrow 2008-10-17  
d8111 写道

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

说得对,这对Hibernate的缓存会有问题,因为Cwin不会通知Hibernate刷新缓存。--这还真是个问题。。
Hibernate无法管理Cwin的事务,Cwin负责完成的DB操作有自己的事务控制方式。其它事务控制器是无法管理的。
4 楼 d8111 2008-10-17  
没有影响-因为Cwin只是使用了Servlet,不冲突的 ~~~

但是Hibernate的事务是不知道Cwin在修改db的
3 楼 sunarrow 2008-10-15  
重新发布了一个版本,修复了在Oracle下无法建序列与显示不出结果的BUG。
同时在发布包中包含了源码。
2 楼 sunarrow 2008-10-15  
没有影响-因为Cwin只是使用了Servlet,不冲突的
如果Cwin与Spring共享数据源,理论上讲Spring将无法管理Cwin的事务。但也许会有问题---没测试过啊,如果不与SPRING数据源,则不会有任何影响

不过发现Cwin这个版本(pv1)在Oracle下跑不通:序列建不成功,并且显示不出结果 --- 今天给别人做个演示,结果灰溜溜地回来了---
1 楼 mazzystar 2008-10-15  
如果spring + hibernate的工程用cwin后会是什么效果

相关推荐

    Dartou_cwin5:ActionScript3.0框架

    【Dartou_cwin5: ActionScript3.0框架】是一个由深圳市大头互动文化传播有限公司开发的开源框架,专门针对ActionScript3.0编程语言设计。这个框架旨在提高开发效率,提供一套完整的解决方案,用于创建丰富的互联网...

    VC继承于CWIN的透明时钟

    在VC++编程环境中,"VC继承于CWin的透明时钟"是指利用MFC(Microsoft Foundation Classes)库中的CWin类进行派生,创建一个具有透明效果的时钟控件。这种技术通常用于构建用户界面,使时钟可以无缝融入到其他图形...

    VC继承于CWIN的实时曲线控件

    在Microsoft Visual C++ (VC++) 开发环境中,创建一个继承自CWin的实时曲线控件是一种常见的需求,尤其是在开发涉及到图形界面和数据可视化的应用程序时。CWin是MFC(Microsoft Foundation Classes)库中的基类,它...

    Yah3cWin:中山大学东校区(位于 HEMC 高等教育中心)Windows 上的 Yah3c 客户端

    Yah3cWin 中山大学东校区(位于 HEMC 高等教育中心)Windows 上的 Yah3c 客户端项目背景这是一个很早的项目,2013年7月开始。当时我想对SYSU Yah3c客户端做一些改进。 众所周知,Yah3c客户端是中山大学学生永远不会...

    CWinListBox-CWin派生的自定义列表框控件

    本文将深入探讨如何利用C++和MFC来创建一个自定义的列表框控件——CWinListBox,这是一个从CWin派生出来的类。 CWinListBox是Windows GUI编程中的一个重要组成部分,它允许用户在列表中选择一个或多个项目。在MFC中...

    弹出窗口互相传值范例

    而对于非敏感数据,简单的方法如查询字符串或隐藏字段就足够了。 总结来说,弹出窗口间的值传递是Web开发中的常见需求,涉及到客户端和服务器端的交互。理解并熟练掌握这些技术对于提升用户体验和优化应用程序至关...

    Squirrel+Win32 DLL.rar

    local dllKernel32 = CWin32Dll( "Kernel32.dll" ); local iRet = dllKernel32.DeleteFileA( "c:/1.zip" ); print( iRet ); } // Demo2. 显示消息对话框 { local dllUser32 = CWin32Dll( "user32.dll" ); ...

    win32窗口封装类_c++

    在Windows编程领域,Win32 API是一个至关重要的接口,它提供了与操作系统进行交互的基本功能,包括创建窗口、处理消息等。对于C++开发者来说,直接使用Win32 API编写窗口程序时,通常需要反复编写一些基础的代码,如...

    Windows mobile 透明/半透明控件组(皮肤控件)

    整套控件完全脱离MFC类,有自己的:CList、CString等组件类,所有控件由CWin这个透明窗体类派生,CWin派生CForm和CCtrl类,在CCtrl类上派生各个透明控件,有:CBtt(按钮控件)、CCheckBox、CRadioBox、CPanel、...

    ActionScript3代码规范,ActionScript编程必读.doc

    * @author cwin5 */ public class Test() { // ... } ``` 2. **公有方法注释**:使用 Javadoc 风格的注释,包含方法参数说明。例如: ```actionscript /** * 设置数字 * @param num 要设置的数字 */ ...

    js实现的真正的iframe高度自适应(兼容IE,FF,Opera)

    if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight) cwin.height = cwin.contentDocument.body.offsetHeight + 20; else if (cwin.Document && cwin.Document.body.scrollHeight) cwin....

    明基 8180C 扫描仪 驱动

    在计算机硬件系统中,驱动程序是连接操作系统与硬件设备的关键软件,它使得操作系统能够识别并控制特定的硬件设备,如扫描仪。明基8180C扫描仪是一款可能用于办公或家庭环境的光学设备,能将纸质文档或图片转换为...

    VC++五子棋单机版源代码

    在MFC中,通常使用资源编辑器来设计对话框和菜单,并将控件与类成员函数关联起来。 3. **添加类和数据结构**: - 项目中添加了一个新的类,该类包含了成员变量和函数。这些变量和函数可能用于存储和操作棋局状态,...

    如何显示windows error string

    当你有一个错误代码,并想获取与之对应的详细错误信息时,`FormatMessage`就能派上用场。下面是一个简单的步骤来使用这个函数: 1. **包含必要的头文件**:在C++代码中,你需要包含`windows.h`头文件,因为它包含了...

    I2C设备驱动总结

    从描述I2C协议开始,到I2C设备驱动架构,特定EEPROM设备AT24c08的datasheet,最后详细描述驱动里的各个函数以及相对应的调试过程!

    用于Winamp2.0插件的光谱分析器源代码(25kb)

    4. CWin32Window.cpp:可能与Windows窗口对象相关,用于创建和管理Winamp插件的窗口。 5. docking.cpp:可能涉及插件在Winamp界面中的停靠和布局逻辑。 6. wafuncs.cpp:可能包含了Winamp API的函数实现,这些API...

    VC6.0中ActiveX控件 Media Player 中用CWMPPlayer4类做视频播放器

    "使用 CWMPPlayer4 类在 VC6.0 中开发基于 ActiveX 控件的媒体播放器" 在开发基于 ActiveX 控件的媒体播放器时,使用 CWMPPlayer4 类是非常实用的。 CWMPPlayer4 类是 Windows Media Player 的一个控件类,提供了...

    Iframe 自动适应页面的高度示例代码

    window.opera) { if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight) cwin.height = cwin.contentDocument.body.offsetHeight + 30; else if (cwin.Document && cwin.Document.body.scrollHeight...

    电大2013年秋)计算机应用基础形成性考核册题目及答案

    ②在考试文件夹下的CWIN下创建一个名为AB38的文件夹; ③将考试下的KS4.txt及KS5.txt文件移动到AB38文件夹中; ④在考试文件夹下将KS3.txt文件复制到LS1文件夹中并换名为KS38.txt ⑤将KS3.txt设置成“隐藏”及“只读...

Global site tag (gtag.js) - Google Analytics