Core J2EE Patterns:前端控制器

问题

你想给表现层的请求处理安排一个集中访问点。

系统需要一个集中的访问点来处理请求。如果没有集中访问点,那么多个请求之间公用控制代码就会在许多文件(比如视图文件)中重复出现。如果控制代码和视图创建代码混在一起,整个应用系统的模块化程度和内聚性都要下降。另外,如果控制代码在多处散放,也不便于代码维护,只要代码有一处改动,就需要改动多个文件。

约束

  • 你想要避免重复控制逻辑
  • 你想要对多个请求采取共通的处理逻辑
  • 你想把系统处理代码和视图分割开
  • 你想要把系统访问点集中在一起

解决方案

是用一个前端控制器,作为最初的接触点,用来处理所有相关请求。前端控制器集中了控制逻辑,避免了逻辑的重复,完成了主要的请求处理操作。

前端控制器通常会使用应用控制器,后者负责操作和视图管理(action and view management)

  • 操作管理,也就是定位特定的操作(action)、并把控制权路由到该操作上,由他处理请求。
  • 视图管理,则是指找到合适的视图,并分配到该视图上。虽然这个任务也可以放进前端控制器完成,但是把它独立出来,成为应用控制器的部分功能,能够增进模块化、可维护性和重用性。

设计手记:处理请求

处理请求需要两种操作:请求处理和视图处理。在请求处理过程中,表现层又必须进行几种操作:

  • 协议处理和上下文转换
  • 导航和路由
  • 核心处理
  • 分派

协议处理是指处理与特定协议相关的请求,上下文转换是指把与特定协议相关的状态转换成为更为通用的形式。一个例子是,从HttpServletRequest实例中获取参数,再复制到一个MyRequest对象中,从而能够在servlet环境之外独立应用。

导航和路由是指确定一个特定请求的路由,比如用那些对象进行请求的核心处理,用哪个视图显示结果。

核心处理也就是对请求的实际处理。

分派是指把控制权从应用系统的一个部分转交给另一个部分,比如从请求处理机制转交给视图处理组件。

策略

Servlet前端策略

JSP前端策略

命令加控制器策略

物理资源映射策略

逻辑资源映射策略

多路资源映射策略

“控制器中的分配器”策略

基类前端策略

过滤器控制器策略

效果

  • 集中控制
  • 提高系统可维护性
  • 增进了重用
  • 增进了开发团队中职责之间的区分
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值