随笔-34  评论-1965  文章-0  trackbacks-0

前一阵子我利用业余时间帮朋友开发了一个库存管理系统,虽然系统不算复杂,但是麻雀须小五脏俱全,系统包括了一般企业应用常见的功能如报表等。下图为系统的截屏。

Screen Capture of ASMS

由于最近有空,我觉得有必要把工程清理一下,作为一个模板。那以后再编写类似项目的时候,简单套用即可。下图为系统的总体设计图。

SSF Overview

由上图,我们可以看出系统使用了Spring、Hibernete、Seam、JSF、Richfaces和Birt等开源框架。相信大家如果有留意企业开发技术的话,对上述名词应该不会陌生。在整合这些框架的时候,为了使它们更能满足现实世界的需求和更易用,我进行了一些扩展,起名为SSF(Simple Seam Framework,简单Seam框架)。

使用SSF的好处

由于在以往的工作中经常使用上述框架,我发现它们都或多或少都存在一些不足之处,SSF会尝试完善它们。

  1. 我们在设计数据库表的时候都会加几个用于做安全审查(Audit)的列,如记录的创建人、创建时间、最后修改人和修改时间等。而且,为了实现数据乐观锁,在每个表里加上一个版本列。在SSF所有的数据库实体(Entity)都继承虚基类com.whatisjee.ssf.domain.entity.AbstractEntity。它含有上面提及的所有与业务无关的信息和对数据库映射元数据。如此一来,我们在就不用在每个实体类里重复一遍。另外,通过Hibernate的拦截器(Interceptor),在持久化实体时将上述信息填入数据库。
  2. 在Spring 2.5版本里,如果我们选择使用Annotation配置Bean,默认是不能将配置资源注入到Bean之中,所以SSF也添加这个功能,实现原理大家可以参考我的以前写一篇文章《扩展Spring——使用 Annotation将配置资源注入到Bean中》。
  3. 虽然Seam针对在JSF里进行数据分页和排序提供了解决方法,但我认为此方法过于简陋,而且不能使用Richfaces的分页控件<rich:datascroller>进行分页。通过SSF数据访问方式,您可以完美结合Richfaces的分页控件简单地实现分页功能。

    Pagine

  4. 默认的JSF的错误提示方式太不用户友好,不能满足当今用户对界面越来越高的要求。通过扩展Seam的<s:decorate>控件的展现方式,当输入框出现错误输入的情况,它们将会被高亮,当用户将光标移进这些输入框,错误信息将浮动显示在其旁边。如下图所以。
  5. Error

  6. 通过Birt提供的报表查看器(Report Viewer)集成报表工具的时候,如果不加额外的限制,只要别人知道URL,完全可以不用登录系统也可以查看系统报表。这显然不是我们愿意看到的。通过继承org.eclipse.birt.report.filter.ViewerFilter,SSF可以限制只有已经授权的用户方可查看报表。

上面列举了SSF对不同框架的部分改进。当然,使用SSF的最大好处还是免去您对如何完美整合这些时下最流行框架的操心。

开始体验SSF

以前的广告有一种常见的做法,就是在对商品大吹特吹之后,蹦出一个家伙问一句:“请问我可以在那里买到XXX呢?”如果大家已经被我上面的广告弄得跃跃欲试的话,可以到GOOGLE CODE下面用SVN下载工程源代码。不过在此之前大家需要安装几个软件:

  1. MySQL 5.x,可以到http://dev.mysql.com/downloads/mysql/下载。它的安装过程很简单,如果你想省事呢,直接把MYSQL作为自动启动的服务。当然,你也可以设成手工启动,需要的的时候才启动它。
  2. Eclipse IDE for Java EE Developers 3.5.2,之所以不用最新版,是因为JBoss Tools最新发布版本3.1只支持Eclipse 3.5.2。请点击这里下载,下完解压到某个目录即可。
  3. JBoss Tools 3.2,用来支持Seam开发。下载地址:http://downloads.sourceforge.net/jboss/JBossTools-Update-3.1.1.v201006011046R-H111-GA.zip
  4. Tomcat 6.x,下载地址:http://tomcat.apache.org/download-60.cgi

下载完成之后,可以参考我制作的视频进行安装和配置(当然这是我第一次制作视频,做得不好的地方请大家多提意见)。当然如果你已经有了IDE,可以直接到GOOGLE CODE(http://code.google.com/p/idiner/source/checkout)的SVN(https://idiner.googlecode.com/svn/trunk/)获取工程代码。

小结

通过上面的介绍,相信大家已经对SSF有部分了解,甚至亲自试用了一下。我会在以后的文章时,就如何在SSF上开发相应的需求进行更详细的讲解。感兴趣的朋友,敬请关注!:-)

posted on 2010-11-15 08:48 Max 阅读(7120) 评论(7)  编辑  收藏 所属分类: Seam系列

评论:
# re: SSF入门 2010-11-15 09:17 | 硫化黑
感谢楼主的精彩教程  回复  更多评论
  
# re: SSF入门 2010-11-15 14:51 | junxy
不知道楼主同时使用spring和seam的原因何在啊?  回复  更多评论
  
# re: SSF入门[未登录] 2010-11-15 22:33 | yansj1997
好,又学到东西了!  回复  更多评论
  
# re: SSF入门 2010-11-16 10:09 | chenlei
收藏了,关注后续  回复  更多评论
  
# re: SSF入门 2010-12-05 10:01 | lizhiguo
楼主,厉害啊,不知道你的验证高亮显示,鼠标移上去显示消息是怎样做的,能贴出代码吗?谢谢  回复  更多评论
  
# re: SSF入门 2010-12-05 10:17 | lizhiguo
哈哈,好大的过程,谢谢楼主,看到工程的代码了,先前只看了图,没有看下面的
  回复  更多评论
  
# re: SSF入门[未登录] 2010-12-20 16:32 | 菜菜
你的报表界面怎么做的,挺好看  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: