`
mayilance
  • 浏览: 7868 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多

Appfuse是一个集成了当前多种开源框架的一个更高层次的适用于B/S结构的开发框架,也是一个Web开发的基础平台。
Spring是它的主线。

Ant:完成自动构件的功能。

一个典型的appfuse目录结构:
resource文件夹里面放置了一些系统的配置文件。src里面放置的是源代码
sql目录里面放置的是DDL文件,比如创建表、创建视图之类的语言
test目录里面放置测试用例。
web目录里面较为复杂,里面有jsp、WEB-INF(里面很复杂)、styles(里面放CSS样式表)、scripts目录里面
  放置javascript,images里面放图片,META-INF目录里面可以指定main函数在哪个class里面、
  以及jar包之间的依赖关系。decorators目录中
doc目录存放文档。

Appfuse系统的特征:
1.模型驱动,可理解行性强
2.层次清晰,职责分明,可维护性强
3.非侵入性
4.可移植性
5.可扩展性

模型驱动:所谓驱动就是以模型为基础,让这个模型为基础去推动项目发展。比如我们开发项目一般都是需求驱动的,
  需求决定我们下一步该做什么事情;模型又是什么呢?小范围的角度说是数据实体对象,这种数据对象不涉及
  业务(也就仅仅是一些getter、setter方法,可能还有一些add、remove方法),看似简单的模型如果识别
  不当的话会导致很严重的问题。模型是来自于需求的,在需求识别过程中,我没有识别出用户需要一个属性
  是birthday。那么我后来如果要添加这个属性的话,首先会影响jsp页面的表现层,如果你用的是struts的话,
  还会影响formbean、validator验证框架,而且业务层的逻辑处理可能也会有相应的变化,OR-mapping的
  配置文件也得改。可谓“牵一发而动全身”,这也就是以模型为推动的含义所在,上面的很多功能都是围绕模型
  而来。

在模型构建的时候首先需要识别出实体,抽取出实体,比如教室、人员、电脑等。其次就是识别出实体之间的关系。
抽取实体以及实体之间的关系都是基于需求的,在某种程度上,关系比实体要重要,因为实体毕竟是清晰的,关系是不
清晰的

关系从面向对象的方式有两种分类的方式,一是按照方向:比如A和B两个类,方向如果是双向的话,那么从A可以知道B,
从B中也可以得到A,如果是单向的话,就是单方得到对方。二是按照数量:比如1对1、1对n、n对n

如果是1对1的话,在A中建立B对象的一个属性,再加上getter、setter方法即可。B中也用类似的处理。
如果是1对0的话,又怎么弄呢?A里面可能有B,也可能没有B,这种时候还是采用上面的方法处理,如果在运行的时候
   可以get到B,那么就是1对1,否则就是1对0了。
如果是1对n的话,使用集合的形式,如List、Set、Vector之类的东西来做。但是抛开技术因素来讲,还需要再分,
   从生命周期的角度来讲,这个1对n是否是聚合的呢?
   比如人和手、脚,正常情况下,一个人有两只手,这是1对n的聚合关系,如果人没有了,手也就没有意义了。
   如果是计算机和主板、其他零部件,二者之间是1对n的组合关系,计算机不存在了,零部件还是有意义的。
   
识别出实体、relation以及relation之中的各种各样的细节,这才是model-driven真正的含义。

聚合和组合如何来表现呢?
聚合在数据库层次体现的就是级联删除。

可维护性好,职责清楚:
比如Site Mesh 、Ajax Serverside、Taglib就是负责显示;Struts、SpringMVC就是页面跳转处理;
EHCache、iText、Digester就是负责逻辑;DAO就是负责数据持久层

修改任何一层面都不会影响其他层面。如果jsp里面全是数据库连接代码的话,就没法弄了……

非侵入性、可移植性、可扩展性这三方面都是来自于Spring。

下面说一下appfuse里面的核心框架Spring,此部分是重点。
Spring的作用相当于一个粘合剂

Spring的基本特征:
首先是轻量级,大小才1M左右

反向控制和依赖注入、面向切面等特征。

AOP是声明式的事务机制,AOP与JTA相结合实现了分布式的数据源的事务机制

其实对于一个web工程来说,建立好工程之后,会有一个工程文件夹(也就是含有WEB-INF的那个文件夹)
还会有一个src文件夹,在src文件夹里面一般都会有java类文件和配置文件,编译后会把src中的java文件
编译成class文件然后放到WEB-INF中的classes文件夹里面,而src中的非java文件(也就是配置文件)
会被直接拷贝到classes文件夹里面的!这里务必注意一点,那就是:如果配置文件不在src目录里的话,
一定要在工程的属性里面,用addFolder的方法将配置文件的文件夹加入到BuildingPath里面去,这样容器
才会在build工程的时候把这些配置文件加入到classes文件夹里面去!!

重要语法:
import:更好的组织spring的配置文件
<beans>
 <import resource="resource_servlet.xml" />
  <import resource="console_servlet.xml" />
</beans>
减少团队开发的冲突,但是当import产生循环引用的时候,会发生什么样的事情?
比如AimportB,BimportC,CimportA,这就形成了一个环路!会不停的解析A、B、C这三个XML文件。

autowire:
自动装配。default-autowire就是“默认自动装配”,一般初始值是no,当属性名和bean的id相同的时候,
就可以自动装配了。

如果不自动装配的话,写xml配置文件的时候会有点麻烦,但同时清晰、可读性好。
但是如果自动安装类型或者名字去装配的话,配置文件中的书写错误不会被在刚启动的时候被发现,而只能在
    运行的时候被发现

Web目录的结构

首先是物理目录的结构:
各个目录的内容见昨天的日记

页面的逻辑结构:


Ajax框架:
异步的javascript和xml,是面向业务的(包括javascript、xml、css、dom等技术)
Ajax属于Web2.0这个业务范畴,Web2.0里面没有新的技术,只是对业务方面有贡献,包括blog(解决了
用户从一个系统的浏览者变成了参与者并能发布东西)、RSS(比如新浪点点通阅读器,将新闻主动送到你眼前,
RSS里面就是通过一个DTD来限制)、AJAX、REST(轻量级的WebService)

ajax中最麻烦的就是javascript!javaScript是一个动态的、运行时的语言,编写调试时非常的困难。
JavaScript是一个运行在浏览器中的语言,需要通过XHttpRequest和后台的不同语言进行通讯。他们
之间能够传递的只是“文本”而已。javaScript在各个浏览器之间是不完全兼容的,比如IE和firefox之间
就是。

火狐浏览器里面有可以调试javascript的工具,应该有所帮助。

实现级联菜单有两种方式:iFrame 和 Ajax

---------------------------------------------------------------------------------
比较大型的开源组织:

apache、sourceforge、ObjectWeb,
页面组装工具SiteMesh

显示层:displaytag(是第三方提供的,extemecomponent)
displaytag的实质是把数据库中的所有数据都抓出来然后统一的进行分页的显示!这是不好的……
比如数据库中有十万条记录,但是你只想看其中的二十条的话……那就糟了。应该是我要第几条到
第几条的记录,数据库就会从表里给我定位这些记录,不要涉及其他无关的记录。

CSS:支持

分享到:
评论

相关推荐

    appfuse

    AppFuse 是一个开源项目,旨在简化Java Web应用程序的开发过程。它提供了一个基础框架,集成了许多流行的开源库,如Spring、Hibernate、Struts或Spring Boot等,帮助开发者快速搭建应用骨架。AppFuse 可以根据选定的...

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

    **AppFuse 学习笔记(一):安装与部署** AppFuse 是一个开源项目,它提供了一种快速构建企业级 Web 应用程序的方式。它使用了多种流行的技术栈,如 Spring Boot、Hibernate、Thymeleaf 和 Maven,使得开发者可以更...

    AppFuse

    ### AppFuse:加速J2EE项目开发 #### 一、简介与背景 AppFuse是一个用于启动J2EE项目的工具包,它提供了一种快速而简便的方法来构建基于Java的应用程序。该工具包由Matt Raible创建,他在网络开发领域拥有丰富的...

    APPFUSE工具研究.doc

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

    可直接使用的appfuse项目

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

    建立项目原型骨架的步骤(最新版本appfuse)appfuse2.1.0-M2

    AppFuse 是一个开源项目,它提供了快速开发Java Web应用程序的基础框架。这个框架集成了Spring、Hibernate和Struts等主流技术,使得开发者能够迅速构建出符合MVC架构的应用。在最新的版本2.1.0-M2中,AppFuse 提供了...

    AppFuse2.1所需包

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

    基于AppFuse框架的B2C电子商务系统研究与实现

    AppFuse是一个开源项目,旨在简化Java Web应用的开发。它提供了一个基础结构,开发者可以在此基础上快速构建安全、模块化的应用程序。本项目是关于利用AppFuse框架构建B2C(Business-to-Consumer)电子商务系统的...

    appfuse 学习笔记

    ### Appfuse 学习笔记 #### 一、Appfuse 简介 Appfuse 是一个开源框架,旨在帮助开发者高效地构建企业级应用。通过提供一套完善的架构模板、最佳实践和技术栈组合,使得开发者能够专注于业务逻辑的实现,而不是...

    appfuse新手上路

    ### AppFuse 2.0 新手上路:启动与配置全解析 #### 一、环境搭建:JDK、Maven与MySQL准备 对于初次接触AppFuse 2.0的新手而言,首要任务是确保开发环境的正确搭建。这包括Java Development Kit(JDK)5或以上版本...

    appfuse1.4-architecture

    06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬

    Appfuse1.9至2.0.2

    主要是自己从网络上搜集的一些关于appfuse1.8.2-2.0.2的一些相关资料,间或有点自己试验的记录,还有点maven和quartz的东东,之前我主要是用1.8.2构建项目,感觉还不错,希望对想学习appfuse的人有些帮助.

    MAVEN 搭建APPFUSE

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

    SSH学习及开发框架-appfuse

    appfuse 有struts2+hibernate+spring的整合 springmvc+hibernate+spring的整合 多模块,但模块都有 学习开发参考使用非常方便 可以到官方下载最新版的,我只是把自己下载的打包整理一下 注意哈,都是基于maven的...

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

    **玩转AppFuse:使用AppFuse建设MVC网站** AppFuse是一个开源项目,它提供了一个快速启动MVC(Model-View-Controller)Web应用程序开发的框架。基于Java,AppFuse集成了Spring、Struts2、Hibernate等流行的技术,极...

    appfuse2学习日记

    ### AppFuse2 学习知识点总结 #### 一、AppFuse 概述 - **定义与价值**:AppFuse 是一款开源项目,旨在利用一系列开源工具帮助开发者高效地搭建 Web 应用程序的基础架构。通过使用 AppFuse,开发人员可以在构建新...

Global site tag (gtag.js) - Google Analytics