`
javafenger
  • 浏览: 246697 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

使用 AppFuse 的七个理由之一

阅读更多

AppFuse 是一个开放源码的项目和应用程序,它使用了在 Java 平台上构建的开放源码工具来帮助我们快速而高效地开发 Web 应用程序。我最初开发它是为了减少在为客户构建新 Web 应用程序时所花费的那些不必要的时间。从核心上来说,AppFuse 是一个项目骨架,类似于通过向导创建新 Web 项目时 IDE 所创建的东西。当我们使用 AppFuse 创建一个项目时,它会提示我们将使用开放源码框架,然后才创建项目。它使用 Ant 来驱动测试、代码生成、编译和部署。它提供了目录和包结构,以及开发基于 Java 语言的 Web 应用程序所需要的库。

与大部分 “new project” 向导不同,AppFuse 创建的项目从最开始就包含很多类和文件。这些文件用来实现特性,不过它们同时也会在您开发应用程序时被用作示例。通过使用 AppFuse 启动新项目,我们通常可以减少一到两周的开发时间。我们不用担心如何将开放源码框架配置在一起,因为这都已经完成了。我们的项目都已提前配置来与数据库进行交互,它会部署到应用服务器上,并对用户进行认证。我们不必实现安全特性,因为这都早已集成了。

当我最初开发 AppFuse 时,它只支持 Struts 和 Hibernate。经过几年的努力,我发现了比 Struts 更好的 Web 框架,因此我还添加了为这些 Web 框架使用的选项。现在,AppFuse 可以支持 Hibernate 或 iBATIS 作为持久性框架。对于 Web 框架来说,我们可以使用 JavaServer Faces(JSF)、Spring MVC、Struts、Tapestry 或 WebWork。

AppFuse 提供了很多应用程序需要的一些特性,包括:

  • 认证和授权
  • 用户管理
  • Remember Me(这会保存您的登录信息,这样就不用每次都再进行登录了)
  • 密码提醒
  • 登记和注册
  • SSL 转换
  • E-mail
  • URL 重写
  • 皮肤
  • 页面修饰
  • 模板化布局
  • 文件上载

这种 “开箱即用” 的功能是 AppFuse 与其他 CRUD 代 框架的区别之一(CRUD 取自创建、检索、更新删除 几个操作的英文首字母),包括 Ruby on Rails、Trails 和 Grails。上面提到的这些框架,以及 AppFuse,都让我们可以从数据库表或现有的模型对象中生成主页/细节页。

图 1 阐述了一个典型 AppFuse 应用程序的概念设计:

典型的 AppFuse 应用程序 

清单 1 给出了我们在创建 devworks 项目时所使用的命令行交互操作,同时还给出了所生成的结果。这个项目使用了 WebWork 作为自己的 Web 框架(请参考下面 参考资料 一节给出的链接)。


清单 1. 使用 AppFuse 创建新项目

alotta:~/dev/appfuse mraible$ ant newBuildfile: build.xmlclean:     [echo] Cleaning build and distribution directoriesinit:new:     [echo]      [echo] +-------------------------------------------------------------+     [echo] |    -- Welcome to the AppFuse New Application Wizard! --     |     [echo] |                                                             |     [echo] | To create a new application, please answer the following    |     [echo] | questions.                                                  |     [echo] +-------------------------------------------------------------+    [input] What would you like to name your application [myapp]?devworks    [input] What would you like to name your database [mydb]?devworks    [input] What package name would you like to use [org.appfuse]?com.ibm    [input] What web framework would you like to use [webwork,tapestry,spring,jsf,struts]?webwork     [echo] Creating new application named 'devworks'...     [copy] Copying 359 files to /Users/mraible/Work/devworks     [copy] Copying 181 files to /Users/mraible/Work/devworks/extras     [copy] Copying 1 file to /Users/mraible/Work/devworks     [copy] Copying 1 file to /Users/mraible/Work/devworksinstall:     [echo] Copying WebWork JARs to ../../lib     [copy] Copying 6 files to /Users/mraible/Work/devworks/lib     [echo] Adding WebWork entries to ../../lib.properties     [echo] Adding WebWork classpath entries     [echo] Removing Struts-specific JARs   [delete] Deleting directory /Users/mraible/Work/devworks/lib/struts-1.2.9   [delete] Deleting directory /Users/mraible/Work/devworks/lib/strutstest-2.1.3     [echo] Deleting struts_form.xdt for XDoclet   [delete] Deleting directory /Users/mraible/Work/devworks/metadata/templates     [echo] Deleting Struts merge-files in metadata/web   [delete] Deleting 7 files from /Users/mraible/Work/devworks/metadata/web     [echo] Deleting unused Tag Libraries and Utilities   [delete] Deleting 2 files from /Users/mraible/Work/devworks/src/web/org/appfuse/webapp     [echo] Modifying appgen for WebWork     [copy] Copying 12 files to /Users/mraible/Work/devworks/extras/appgen     [echo] Replacing source and test files   [delete] Deleting directory /Users/mraible/Work/devworks/src/web/org/appfuse/webapp/form   [delete] Deleting directory /Users/mraible/Work/devworks/src/web/org/appfuse/webapp/action     [copy] Copying 13 files to /Users/mraible/Work/devworks/src   [delete] Deleting directory /Users/mraible/Work/devworks/test/web/org/appfuse/webapp/form   [delete] Deleting directory /Users/mraible/Work/devworks/test/web/org/appfuse/webapp/action     [copy] Copying 5 files to /Users/mraible/Work/devworks/test     [echo] Replacing web files (images, scripts, JSPs, etc.)   [delete] Deleting 1 files from /Users/mraible/Work/devworks/web/scripts     [copy] Copying 34 files to /Users/mraible/Work/devworks/web   [delete] Deleting: /Users/mraible/Work/devworks/web/WEB-INF/validator-rules-custom.xml     [echo] Modifying Eclipse .classpath file     [echo] Refactoring build.xml     [echo] ----------------------------------------------     [echo] NOTE: It's recommended you delete extras/webwork as you shouldn't need it anymore.     [echo] ----------------------------------------------     [echo] Repackaging info written to rename.log     [echo]      [echo] +-------------------------------------------------------------+     [echo] |           -- Application created successfully! --           |     [echo] |                                                             |     [echo] | Now you should be able to cd to your application and run:   |     [echo] | > ant setup test-all                                        |     [echo] +-------------------------------------------------------------+BUILD SUCCESSFULTotal time: 15 seconds

 在创建一个新项目之后,我们就得到了一个类似于图 2 所示的目录结构。Eclipse 和 Intellij IDEA 项目文件都是作为这个过程的一部分创建的。

这个目录结构与 Sun 为 Java 2 Platform Enterprise Edition(J2EE)Web 应用程序推荐的目录结构非常类似。在 2.0 版本的 AppFuse 中,这个结构会变化成适合 Apache Maven 项目的标准目录结构(有关这两个目录介绍的内容,请参看 参考资料 中的链接)。AppFuse 还会从 Ant 迁移到 Maven 2 上,从而获得相关下载的能力和对生成 IDE 项目文件的支持。目前基于 Ant 的系统要求提交者维护项目文件,而 Maven 2 可以通过简单地使用项目的 pom.xml 文件生成 IDEA、Eclipse 和 NetBeans 项目文件。(这个文件位于您项目的根目录中,是使用 Maven 构建应用程序所需要的主要组件)。它与利用 Ant 所使用的 build.xml 文件非常类似。)

现在我们对 AppFuse 是什么已经有一点概念了,在本文剩下的部分中,我们将介绍使用 AppFuse 的 7 点理由。即使您选择不使用 AppFuse 来开始自己的项目,也会看到 AppFuse 可以为您提供很多样板代码,这些代码可以在基于 Java 语言的 Web 应用程序中使用。由于它是基于 Apache 许可证的,因此非常欢迎您在自己的应用程序中重用这些代码。



分享到:
评论

相关推荐

    appfuse

    描述中提到的是使用AppFuse 2.0版本的情况,这可能是指一个基于早期MVC架构的示例项目。在AppFuse 2.0时代,它主要支持Struts或 Tapestry 框架,而非现代的Spring Boot。由于描述中提到“没有jar包”,这可能意味着...

    appfuse学习笔记(一)安装部署

    使用 Maven 的 archetype:generate 命令创建一个新的 AppFuse 项目。在命令行中输入以下命令: ``` mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeGroupId=org.appfuse -...

    使用 AppFuse 快速构建 java

    为了开始使用AppFuse,首先需要准备一个合适的开发环境。以下是一些基本步骤: 1. **下载AppFuse**: 从AppFuse的官方网站下载最新版本的源码包(本文使用的版本是appfuse-tapestry-1.9.3-src.zip)。将其解压至所需...

    可直接使用的appfuse项目

    AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...

    使用appfuse构建环境

    AppFuse是一个开源的Java Web应用程序框架,用于快速搭建基于Spring MVC、Spring Security、Hibernate等技术的应用程序。它提供了一套完整的开发模板,使得开发者能够专注于业务逻辑的实现,而无需过多关注底层架构...

    AppFuse

    AppFuse是一个用于启动J2EE项目的工具包,它提供了一种快速而简便的方法来构建基于Java的应用程序。该工具包由Matt Raible创建,他在网络开发领域拥有丰富的经验,并且是多个开源项目的贡献者,包括Roller Weblogger...

    玩转appfuse--使用appfuse建设MVC网站

    AppFuse是一个开源项目,它提供了一个快速启动MVC(Model-View-Controller)Web应用程序开发的框架。基于Java,AppFuse集成了Spring、Struts2、Hibernate等流行的技术,极大地简化了开发流程,使开发者能够更专注于...

    一个appfuse的应用

    AppFuse 是一个开源项目,它为开发Java Web应用程序提供了一个快速启动的基础。它结合了多种框架和最佳实践,使得开发者可以快速构建出安全、可维护的Web应用。AppFuse 使用Maven作为构建工具,整合了Spring、...

    APPFUSE工具研究.doc

    AppFuse 是一个基于Java平台的开源项目,旨在加速和简化Web应用程序的开发。它通过集成各种流行框架,如Struts、Spring、Hibernate等,提供了一个项目骨架,使得开发者能够快速搭建新项目的结构。AppFuse分为1.x和...

    使用 AppFuse 快速构建 J2EE 应用

    AppFuse 是一个开源项目,旨在简化 J2EE 应用程序的开发过程。它提供了一个基础框架,结合了多种流行的技术和最佳实践,使得开发者能够快速地创建企业级的 Java Web 应用。通过使用 AppFuse,你可以避免从零开始搭建...

    appfuse 学习笔记

    Appfuse 是一个开源框架,旨在帮助开发者高效地构建企业级应用。通过提供一套完善的架构模板、最佳实践和技术栈组合,使得开发者能够专注于业务逻辑的实现,而不是基础架构的搭建。这不仅大大提升了开发效率,还保证...

    AppFuse2.1所需包

    AppFuse 是一个开源项目,旨在简化Java Web应用程序的开发。它提供了一个基础架构,开发者可以在此基础上快速构建安全、可扩展的应用程序。AppFuse 2.1 版本是该项目的一个较早版本,但仍然包含了现代Web开发的核心...

    MAVEN 搭建APPFUSE

    【MAVEN 搭建APPFUSE】是一个关于使用Maven构建基于AppFuse的应用程序的教程。AppFuse是一个开源项目,旨在简化Web应用程序的开发,它提供了一个基础框架,可以帮助开发者快速启动新项目,整合了Spring、Hibernate、...

    appfuse使用手册

    AppFuse 是一个开源项目,旨在简化Web应用程序的开发。它通过集成流行的技术栈,如Struts、Hibernate和Spring,为开发者提供了一个基础架构,从而快速搭建可扩展的、安全的和易于维护的应用程序。本手册将详细介绍...

    AppFuse项目研究

    在项目初始化阶段,AppFuse 使用了一个名为 `StartupListener` 的监听器。这个监听器是 Spring 的 `ContextLoaderListener` 和 Servlet API 的 `ServletContextListener` 的子类,它在Web应用程序启动时执行一些关键...

Global site tag (gtag.js) - Google Analytics