使用大量的第三方组件是Appfuse的主要特点,接下来我们就看看他都使用了什么组件。
1.
DisplayTag:自我觉得是AppFuse里降低编码量最大的组件,我专门写了一篇使用DisplayTag的文章,
http://blog.csdn.net/clearwater21cn/archive/2005/02/21/296316.aspx,这里就不说了。
2.
JSTL:JSP Standard Tag Library是建立在JSP上的某种custom actions(自定操作)或custom tags(自定标签),类似于html语法中的标记。JSTL提供了诸如循环、条件、数据库访问、XML处理、国际化(i18n)等开发上的工具和流程。本系统中主要使用JSTL的核心标记库及格式化标记库标签实现动态的Web页和国际化支持。
3.
Sitemesh:用于建立复合视图。旨在提高页面的可维护性和复用性。sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,banner结合为一个完整的视图,可方便的建立复合视图模式。
4.
Struts Menu:AppFuse作者写的基于JSP和Struts的应用程序的Web菜单框架。利用它可以很方便的通过XML定义及JSP标签构建树形菜单。
5.
OSCache:OSCache是OpenSymphony组织提供的一个J2EE架构中Web应用层的缓存技术实现组件。通过缓存页面的输出结果,可以很显著的改善系统运行性能。并能够改善系统的稳定性。
6.
UrlRewrite:地址变换技术,可以将应用中的url变换成自定义样式。
7.
Acegi:1.8加入的新组件,属于Spring的子项目。它使用Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。AppFuse用它实现了用户的认证和授权管理。
8.
Quartz:AppFuse中没有使用这一组件,但我觉得它提供的功能很常用,并实现的很好,因此顺带提一下。Quartz是一个实现任务定时调度的框架,它提供了简单易用的接口,实现了可调度任务的接口,并实现了强大的任务调度运行时(可以独立运行、可以作为EJB部署于容器中、本身支持cluster,等等),这一组件由Spring提供。
AppFuse还给我们提供或介绍了很多好用的工具,能大大加快我们的开发速度。如果能够很好的使用这些工具,我们可以只给出一个表的POJO,它们就能够自动生成所有的操作该POJO对应的数据表通常需要的增、删、改、查功能的模型层、控制层、视图层文件,几乎不用再修改就可以完成对这张表的所有基本操作。
1. AppGen
AppFuse给我们提供了一个通过xdoclet生成代码的工具——AppGen,我们来看看它怎么用。
POJO(Plain Old Java Object)代表一个存储在持久性存储器(如数据库)中的实体的对象视图。它通过hbm.xml配置文件与存储器中的数据相映射。
首先,你需要有这个表的POJO,放在src\dao\org\appfuse\model中。
在控制台中进入项目下的extras\appgen路径,键入ant -Dmodel.name=XXX -Dmodel.name.lowercase=xxx,第一个XXX处写你的POJO类名,第二个xxx处写这个对象在小写时的名字。当控制台出现BUILD SUCCESSFUL时,代码就生成了。代码在extras\appgen\build\gen文件夹下,包括java源代码(DAO、Service、Action)、单元测试、JSP、资源文件、xml配置文件、源数据等,目录结构与原项目一致,你只要把需要的目录拖到相应的项目根目录下就可以了,当然了,有的代码是需要在已有的文件上进行修改的,主要是属性文件和xml文件,这时需要你把新的代码手动转移到原来的文件中。
AppGen也可以为你省去这个麻烦,只要在前面的那段命令中加一个install,即ant install -Dmodel.name=XXX -Dmodel.name.lowercase=xxx,AppGen会直接把代码生成到你的项目中去,包括修改已存在的文件。这时为了保险起见,最好先备份一下代码。
2. xdoclet注释
AppGen生成的文件缺少了hbm.xml和Action Form Bean,难道我们要自己写吗?不是的。仔细察看build.xml文件就会发现实际上我们下载的AppFuse最初的源代码中并没有hbm.xml、FormBean,甚至连web.xml、struts-config.xml、validation.xml都没有,这些文件都是在我们执行ant setup时build.xml使用xdoclet自动生成的。 甚至连数据库和表、表里的数据也可以自动生成。奥秘都在POJO中。
查看User.java这个POJO你会发现里面除了java代码,还有很多注释,有@hibernate开头的,@struts开头的,这些都是xdoctlet的标签。我们大致讲解一下:
@struts.form:用来生成Form Bean,如User.java中写了@struts.form include-all="true" extends="BaseForm",意思是该POJO中每一个属性在Form Bean中都要有,并且生成的Form Bean文件要继承BaseForm。如果不希望生成的FormBean包含POJO的所有属性,可以在相关的属性get方法前填写注释@struts.form-field,意思是该属性要在FormBean中生成。那么如果我们要在FormBean中添加一些POJO没有的属性或方法怎么做呢?打开metadata\web文件夹,可以看到有一个xdoclet-UserForm.java文件,里面是User.java在生成Form Bean时新加入的代码,我们同样可以把我们自己在FormBean中增加的代码新建到一个xdoclet-POJOFrom.java文件中就好了。
@struts.validator:用来生成validation.xml文件。最常用的如@struts.validator type="required",意为该属性在表单中需要有必填的验证。当然前提是这个属性也在FormBean中。validation还有一项配置是自定义的校验规则,使用正则表达式表示。metadata\web中有一个文件validation-global.xml,里面就有邮编等规则的配置。
@hibernate:这个是比较复杂的,用来生成hbm.xml文件。其实内容与hbm.xml基本一致,所以如果会写hbm.xml,这个也就会写了。初学者可以先建表,使用工具生成hbm.xml,再仿照生成的hbm.xml内容写这个标签。一旦标签写好了,不光可以生成hbm.xml,build.xml还可以自动在数据库中建表。
@struts.action/@struts.action-forward:POJO不能生成struts-config.xml,这个标签是要写到Action中的。如果使用AppGen生成Action,你会看到@struts.action已经写好了,这个标签的作用就是生成当前Action在struts-config.xml中的映射代码,写法与struts-config.xml中一致,其实就是把xml中的配置移植到Action中。还有一个问题,如果我们要在struts-config.xml中进行与Action无关的全局的配置,如global-forwards呢?浏览metadata\web文件夹你会发现里面有多个xml文件,其中以global和struts开头的文件就是写这些配置的。build.xml在setup时会自动将这些文件联合Action中的注释生成一个完整的struts-config.xml文件。
接下来还有web.xml文件,你一定猜到了同样需要在metadata\web中配置。除了刚才提到的那些xml文件,剩下的基本都是用于配置web.xml的了。我们自定义的filter和listener是有具体类的,所以我们同样可以在这些filter和listener类中添加注释,具体例子参考AppFuse中的filter吧,很简单的。
进行了所有配置后,运行ant setup,build.xml会根据POJO、Action等自动生成FormBean、hbm.xml、struts-config.xml、validation.xml、web.xml,并在数据库中创建相应的表。看起来可能有点复杂,但如无特殊要求,对数据表的增、删、改、查,只需要写好POJO,一切都可以搞定。
3. Commonclipse
org.appfuse.model中有一个抽象类BaseObject,定义了三个抽象方法:hashCode()、equals()和toString(),其中前两个是Hibernate要求POJO必须实现的方法。所有的POJO都继承自这个类,当然也要实现这三个方法,这个工具可以帮助你实现这三个方法。
我们可以使用Eclipse在线获得这个工具。步骤:依次点击"Help" -> "Software updates" -> "Find and Install" -> "Search for new features to install",点击"add update site",输入http://commonclipse.sourceforge.net,OK。
接下来需要对Commonclipse进行一些配置。点击"Window"->"Preferences",选择"Java",你会在菜单中看到Commonclipse。点击General标签,将复选框全部钩掉(全不选)。点击"OK"。
选中一个类,右击,你会在菜单中看到Commonclipse。选择要生成的方法,就这么简单。
分享到:
相关推荐
### Appfuse 学习笔记 #### 一、Appfuse 简介 Appfuse 是一个开源框架,旨在帮助开发者高效地构建企业级应用。通过提供一套完善的架构模板、最佳实践和技术栈组合,使得开发者能够专注于业务逻辑的实现,而不是...
在这个项目中,Spring作为服务层和持久层的管理工具,负责组件的配置、事务管理以及数据库操作。 **JDBC** Java Database Connectivity (JDBC)是Java中用于访问数据库的标准API。在AppFuse Light中,JDBC被用来连接...
这个"appfuse-tutorial-struts-1.6.zip"文件是一个基于Struts 1.6的AppFuse教程,用于指导开发者如何构建一个企业级的人员管理系统。Struts是Apache软件基金会下的一个开源框架,专门用于构建基于MVC(Model-View-...
替换 `<选择的模板>` 为下载的模板名称,如 `appfuse-basic`,`appfuse-minimal` 等,`<对应版本>` 是你下载的 AppFuse 版本号。 **4. 编译与运行** 进入新创建的项目目录,使用 Maven 编译并运行项目: ``` cd my...
综上所述,AppFuse 不仅是一个强大的开发框架,还是一个全面的学习资源库,可以帮助开发者快速掌握现代 Web 开发所需的各种技能。无论你是初学者还是有经验的开发者,都能从这份文档中获益良多。
`mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts-archetype -DarchetypeVersion=2.1.0-M2 -DgroupId=cn.xue.app -DartifactId=xueAppFuse` ...
这个版本的亮点在于其集成了一系列现代开发工具和最佳实践,旨在提高开发效率和代码质量。AppFuse 的核心理念是简化复杂性,通过模板和约定,让开发者可以更快地搭建应用架构,从而专注于业务逻辑。 在AppFuse ...
【AppFuse 框架详解】 AppFuse 是一个由 Matt Raible 创建的开源项目,它为初学者提供了... mvn archetype:create -DarchetypeGroupId=org.appfuse -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=...
在本篇“appfuse学习笔记(二)新建模块”中,我们将深入探讨AppFuse框架的模块创建过程。AppFuse是一个开源项目,它提供了一个快速开发Web应用的基础结构,旨在简化开发流程并提高代码质量。通过AppFuse,开发者...
在本篇“appfuse学习笔记(三)解决乱码和菜单设置”中,我们将深入探讨在使用AppFuse框架时遇到的编码问题以及如何定制应用程序的菜单。AppFuse是一款开源项目,它提供了一个快速开发Web应用的基础,特别是对于Java...
主要是自己从网络上搜集的一些关于appfuse1.8.2-2.0.2的一些相关资料,间或有点自己试验的记录,还有点maven和quartz的东东,之前我主要是用1.8.2构建项目,感觉还不错,希望对想学习appfuse的人有些帮助.
### AppFuse核心组件 1. **Spring**:作为应用的核心容器,负责管理bean,提供依赖注入(DI)和面向切面编程(AOP)等功能。Spring框架的使用使得代码更加模块化,易于测试和维护。 2. **Struts2**:作为MVC模式的...
AppFuse 是一个开源项目,专为加速 J2EE 应用程序开发而设计。...通过本文的学习,读者将能够熟练运用 AppFuse,体验其带来的高效和便捷。同时,结合 Ant 脚本,开发者可以灵活地管理和构建项目,进一步提高开发效率。
- **定位**:AppFuse 更像是一个项目的骨架或模板,它通过集成各种工具和技术(如 Java, Maven, Struts 等),提供了快速构建 Web 应用的基础框架。这类似于使用 IDE 的向导功能来创建 Web 项目的过程。 #### 二、...
06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬
appfuse-demos-2.0.2代码生成的基本代码框架。