4.5 前端控制器模式
前端控制器模式(Front Controller)为整个应用提供唯一的请求入口。所有请求先汇聚到这一个控制器,在这里集中完成鉴权、日志、国际化、异常处理等公共逻辑,再由它分发给具体的处理者。
如果没有它,这些公共逻辑就会被复制到每一个页面/处理器里——既重复又容易遗漏(比如某个页面忘了加鉴权)。下面的实验让你选择请求路径,观察前端控制器如何先做公共处理,再分发到对应视图。
正在加载交互实验...
控制器 + 分发器
前端控制器通常和一个分发器(Dispatcher)配合:
- 前端控制器:唯一入口,负责公共预处理。
- 分发器:根据请求把控制权路由到正确的视图或处理者。
java
class FrontController {
private Dispatcher dispatcher = new Dispatcher();
public void handle(Request req) {
authenticate(req); // 公共逻辑只写一处
log(req);
dispatcher.dispatch(req); // 再路由到具体处理者
}
}下面的实验展示一张集中式路由表:所有“路径 → 处理者”的映射都在一处维护,新增路由只改这张表。
正在加载交互实验...
正在加载概念检查...
正在加载概念检查...
你天天都在用它
前端控制器是现代 Web 框架的基石,只是被框架藏在了背后:
- Spring MVC 的
DispatcherServlet——名字直接点明了“分发器”。
- 几乎所有 Web 框架的中央路由 / 入口文件(Express 的 app、Django 的 URL 调度、PHP 的
index.php单入口)。
正因为有了统一入口,框架才能在一处插入鉴权中间件、全局异常处理、请求日志。理解前端控制器,你就理解了“为什么所有请求都要先过框架的那一道门”。
正在加载本节练习...