分享

J2EE分层设计概念

 ljjzlm 2006-08-01
J2EE分层设计概念
                     J2EE五层逻辑模型和常见Framework
 
                                                               http://spaces./members/JuicyDanielChan
 
                      ————————————————
                      |                          客户端层                         |        用户交互,UI实现
                      | Browser,WirelessDevice,WebService |    Http, Soap 协议(SOP体系)
                      ————————————————
 
                      ————————————————
                      |                            表现层                            |   集中登录,会话管理
                      | Struts,Jsf,Webwork,Tapstry, Velocity | 内容创建,格式,传送
                      ————————————————
 
                       ————————————————
                       |                       业务服务层                        |  业务逻辑,事务,数据,服务
                       | SessionEJB,Spring,Jdoframework) | SessionEjb,POJO Service
                        ————————————————
 
                       ————————————————
                       |                            集中层                            | 资源适配器,遗留/外部系统 
                       |Jms,Jdbc,Connnector,External Service  |       规则引擎,工作流
                       ————————————————
                       (持久化EntityBean,Hibernate,iBatis,Jdo,Dao,TopLink etc.)      
 
                        ————————————————
                        |                           资源层                            | 资源,数据库,外部服务
                        | DataBase,Resource,External Service   | (大型主机,B2B集中系统)
                        ————————————————
 
当然一个常见典型的J2EE系统可能是这样的
 
客户端 —— 表现层 —— 业务层 —— 持久层 —— 数据库  
FireFox + Velocity + Struts + Spring + Hibernate + MySql + Tomcat + Eclipse
我比较习惯用开源产品。强烈支持开源!! *.*
                                                           
作为一个程序员,常常打交道的是中间层(表现层,业务层,集成层)。
每个层常用的技术简单的介绍如下:

表现层(Present Tier)

Intercepting Filter —— 用于对请求的预处理和后处理
 
    拦截过滤器拦截输入的请求和输出的响应,并加入了一个过滤器。Filter可以通过配置加入和取消(象在web.xml中加入ServletFilter),这样多个过滤器还可以不冲突地组合使用。当预处理以及/或者(filter虽然后response参数,但有时候filter不做处理)后处理完成后,这组过滤器种的最后一个把控制器交给原来的目标对象。对于request来说,这个目标对象通常是前端控制器,但也可能是一个视图。在Struts中,Action的执行方法中参数由request, response, actionMapping,actionForm等等组成。而在Webwork中,Action不用去依赖于任何Web容器,不用和那些JavaServlet复杂的请求(Request)、响应(Response)关联在一起。对请求(Request)的参数(Param),可以使用拦截器框架自动调用一些get()set()方法设置到对应的Action的字段中。所以Action的excute()方法没有任何参数,也不存在FormBean。正是这种拦截器,使得Action变得非常简单,Action不用继承servlet,不依赖servlet容器,实现了请求响应与Action之间的解耦,而且可以很方便的在action中不依赖web容器进行单元测试。
 
Front Controller —— 集中控制请求处理
 
    前端控制器是一个容器,用来装载表现层的共同处理逻辑(如果不采用这个控制器,逻辑代码就会错误的放在视图里)。控制器负责处理请求,进行内容的获取,安全性,视图管理,导航等操作,并委派一个分配器组件分派视图。
 
Application Controller —— 实现操作和视图管理的集中化,模块化
 
    应用控制器集中了控制,数据获取,视图和命令处理的调用。前端控制器为输入的请求提供了一个集中的访问点和控制器,而应用控制器则负责找出并调用命令,并且还要找出并分派视图。比如Struts中的ActionServlet,Webwork种的ServletDispatcher等。
 
Context Object —— 以独立于具体通讯协议的形式封装状态
 
    Context对象以独立于具体通讯协议的形式封装了状态,是状态能够在整个应用系统中共享。使用Context对象能够简化测试过程,提供一个更为通用的测试环境,减少了对特定容器的依赖。在webwork中,有两种不同的Context对象,一种是

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多