Sun River
Topics about Java SE, Servlet/JSP, JDBC, MultiThread, UML, Design Pattern, CSS, JavaScript, Maven, JBoss, Tomcat, ...
posts - 78,comments - 0,trackbacks - 0

J2EE 五层逻辑模型和常见 Framework

 

 

                      ————————————————

                      |                          客户端层                     |        用户交互, 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 等。

posted on 2006-11-16 13:18 Sun River 阅读(218) 评论(0)  编辑  收藏