前端控制器设计模式  

    前端控制器(front controller)主要提供一种可以集中式管理请求的控制器,一个前端控制器可以接受所有的客户请求,将每个请求递交给相应的请求句柄,并适当地响应用户。

    前端控制器也是表示层的设计模式,它的出现主要是由于表示层通常需要控制和协调来自不同用户的多个请求,而这种控制机制又根据不同的需要,可能会集 中式控制或分散式控制。换句话说,就是应用系统需要对于表示层的请求提供一个集中式控制模块,以提供各种系统服务,包括内容提取、视图管理和浏览,如果系 统中没有这种集中式控制模块或控制机制,每个不同的系统服务都需要进行单独的视图处理,这样代码的重复性就会提高,致使系统开发代价提高。同时,如果没有 一个固定模块管理视图之间的浏览机制,致使其浏览功能下放于每个不同的视图中,最终必将使得系统的可维护性受到破坏。本文中我们主要讨论的是集中式控制模 块,而不是分散式控制,因为前者更适合于大型的应用系统。

       基于上面所说的问题,研究人员提出了前端控制器的设计模式。在这种模式中,控制器提供一个处理不同请求的控制点,这里的处理工作包括安全事务、视图 选择、错误处理和响应内容的生成,通过将这些工作集中在一点进行处理,大大地减低了Java代码量,同时这种方法也可以减少视图模块的程序逻辑,保证了在 不同请求之间可以重用大量的逻辑代码。通常,控制器都是和一个分派组件联合工作的,分派组件主要是用于视图管理和浏览,也就是为用户选择下一个应该显示的 视图,并同时提供对相关显示资源的控制,分派组件可以包含在控制器之内,也可以是另外一个单独的组件。虽然前端控制器模式推荐对于全部的请求使用统一处 理,但是它也没有限制在一个系统中只能具有一个控制器,在系统中的每个层次都可以具有多个控制器,并且映射至不同的系统服务。