Appfuse & tapestry 小记

声明: 以下内容从 黄隽实ID:shagoo 博客转帖(http://blog.csdn.net/shagoo/archive/2009/03/02/3950492.aspx),如作者不允许转帖,请联系我删除之,谢谢!

以下是原文:

忙里抽闲在《Maven2小记》 之后准备把 Appfuse 的一些使用心得记录一下,以备参考:

简介:Appfuse是一个开放源码的项目和应用程序,它由 Matt Raible开发,它集成了流行的Spring、Hibernate、ibatis、struts、Xdcolet、junit等基础框架,并提供了对 Taperstry和JSF等的支持,非常适合作为J2EE项目的骨架,特别是和Maven的整合,使它更加光芒耀眼。在用AppFuse开发时,用户可以自由选择Struts、Spring MVC、Webwork、Taperstry和JSF这几个MVC框架。它采用测试驱动(TDD)的开发方式,使用JUnit测试各层。

 

1、安装与部署:

"快速"这就是Appfuse的一大优点,所以它的安装与部署过程也十分简略。首先当然保证机器上必须有Maven(如果有问题可以参考《Maven2小记》 ),然后就可以开始建立项目了,以下是大致步骤(这里以Appfuse-Spring标准结构为例):

〉新建一个目录,准备安放Appfuse项目工程。例如为:d:/workspace,运行Maven命令:mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.2 -DgroupId=com.appfuse.app -DartifactId=appfuse,运行过程中,会看到一系列的waring警告,不用管。等看到:Builde Success,表示成功了。maven会在d:/workspace下新建appfuse目录,里面含有最重要的pom.xml文件。

〉然后就是修改pom.xml的参数,这些参数都在文件底部,若你是mysql数据库,则很简单,只需修改用户名和密码(默认为root和空)。若是其他数据库,请参照pom.xml里面的数据库配置文件进行替换修改。

〉最后,进入d:/workspace/appfuse目录,运行mvn appfuse:full-source进行安装,过程很快,然后就是运行mvn jetty:run-war启动jetty,在测试时会有一些异常信息。不用理会,只是一些测试数据没有准备好。启动完毕后打开 http://localhost:8080 就可以看到Appfuse的登录页面。

这里有个很有意思的地方,如果在安装过程中出现

[INFO] null

Illegal character in path at index 18 : file:/C:/Documents and Settings/Administrator/.m2/repository/org/apache/ant/ant/ 1.7 . 0 /ant- 1.7 . 0 .jar

...

类似错误的话可能是由于你的maven库安装目录是window下的默认目录 C:/Documents and Settings...这个路径里面含有有空格所以触发的ant的一个bug导致出错,解决办法很简单:你可以按照QuickStart的提示,设置maven的settings.xml里面选项<localRepository>c:/docume~1/username/.m2/repository</localRepository>,当然你也可以找一个不带空格的目录(如:/path/to/local/repo)然后设置settings.xml<localRepository>/path/to/local/repo</localRepository>就可以了~

2、准备开发:

首先,当然要把代码导入到IDE中,比如我们用Eclipse,那么就在项目目录下,运行mvn eclipse:eclipse,然后到Eclipse>File>Import导入项目。然后我们就可以开始阅读、添加或者修改Appfuse的源码了~

3、开发笔记:

目前准备按照官方开发文档里 http://appfuse.org/display/APF/Developer+Guide 的开发文档进行实践性的讲解,以下是一个Appfuse开发DEMO的建立过程:
a> 我们先建立 Employee 表:
CREATE TABLE `Employee` (
`id` bigint(20) NOT NULL auto_increment,
`code` varchar(10) NOT NULL,
`dept` varchar(50) NOT NULL,
`name` varchar(20) NOT NULL,
`status` varchar(10) NOT NULL,
`telephone` varchar(20) default NULL,
`title` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
b> 然后由表生成model 运行mvn appfuse:gen-model
c> 接下来你会在model package中发现新的Employee.java
d> 在@Id @GeneratedValue(strategy=IDENTITY) @GeneratedValue(strategy = GenerationType.AUTO)两个ID生成策略中选择一个(我选择@GeneratedValue(strategy = GenerationType.AUTO)),保存好
e> 然后就是由model生成CRUD 运行mvn appfuse:gen -Dentity=Employee会生成employeeList.jsp、employeeForm.jsp、 EmployeeAction.java但是没有自动生成dao与service 而是采用的GenericManager<Employee, Long>中的方法,解决方法如下:
在项目下的pom.xml中查找genericCore,大概在940行 找到 将属性true 改为false
像这样<amp.genericCore>false</amp.genericCore>
重新运行 mvn appfuse:gen -Dentity=Employee
在myeclipse中查看代码 dao 与 service也都生成了
f> 大功告成,运行mvn jetty:run在浏览器中查看界面吧
g> 但是我发现最后还有个问题 就是appfuse页面中 显示乱码
解决方法如下:
修改pom.xml中
260行: *_zh*.properties
294行:<exclude>*_zh*.properties</exclude>
如果发现问题依然存在,可以试着修改display*.properties文件,把里面的文件改成中文,然后mvn clean和mvn jetty:run一下就可以了
接下来就是具体的开发过程了,待续~~ 由于篇幅原因请看新作《Appfuse 源代码分析 》~~

这里附上一个 web.xml 的常见配置实例,还是比较有使用价值的:)

 

最后,抽点时间介绍一下 Tapestry :

同样是很优秀的 JavaEE 开发框架,同样有 maven 的支持,他的设计风格却与 Appfuse 大相径庭,不过基于 servlet 的模块式开发思想,整洁的模板代码风格,以及 Tapestry 广泛使用的 org.apache 系列的类库,这可能也是他也很有"人缘"的原因了,不惜为 developer 们相当不错的选择~

首先同样是安装(比 Appfuse 更方便):

mvn archetype:create -DarchetypeGroupId=org.apache.tapestry -DarchetypeArtifactId=tapestry-simple -DarchetypeVersion=5.0.2 -DgroupId=org.example -DartifactId=tapestry -DpackageName=org.example.tapestry -Dversion=1.0.0-SNAPSHOT

注意 artifactId 和 packageName 必须对应否则 Eclipse Maven2 会报错哦。

然后直接打开 Eclipse 执行 Eclipse>File>Import 导入项目即可。

最后进入tapestry项目目录,运行mvn jetty:run查看效果。

然后是开发中的技巧:持续更新中,可以看看新作《Appfuse 源代码分析 》

Keep walking ...

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值