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 阅读(184) 评论(0)  编辑  收藏