查看“设计模式:前端控制器模式”的源代码
←
设计模式:前端控制器模式
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:设计模式]] == 关于 == 前端控制器模式(Front Controller Pattern)是用来'''提供一个集中的请求处理机制''',所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,'''然后把请求传给相应的处理程序'''。 === 结构 === 包含以下主要角色: # '''前端控制器'''(Front Controller):'''处理应用程序所有类型请求'''的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。 # '''调度器'''(Dispatcher):前端控制器可能使用一个调度器对象来'''调度请求到相应的具体处理程序'''。 # '''视图'''(View):视图是为请求而创建的对象。 === 示例 === 创建 FrontController、Dispatcher 分别当作前端控制器和调度器。HomeView 和 StudentView 表示各种为前端控制器接收到的请求而创建的视图。 其结构如下: : [[File:J2EE 模式:前端控制器模式:示例.png|600px]] 其代码如下: # 视图: #: <syntaxhighlight lang="java" line highlight=""> public class HomeView { public void show(){ System.out.println("Displaying Home Page"); } } </syntaxhighlight> #: <syntaxhighlight lang="java" line highlight=""> public class StudentView { public void show(){ System.out.println("Displaying Student Page"); } } </syntaxhighlight> # 调度器: #: <syntaxhighlight lang="java" line highlight="1,2,10"> public class Dispatcher { private StudentView studentView; private HomeView homeView; public Dispatcher(){ studentView = new StudentView(); homeView = new HomeView(); } // 分发(调度)方法 public void dispatch(String request){ if(request.equalsIgnoreCase("STUDENT")){ studentView.show(); }else{ homeView.show(); } } } </syntaxhighlight> # 前端控制器: #: <syntaxhighlight lang="java" line highlight="2,23"> public class FrontController { private Dispatcher dispatcher; public FrontController(){ dispatcher = new Dispatcher(); } // 权限验证 private boolean isAuthenticUser(){ System.out.println("User is authenticated successfully."); return true; } // 追踪请求 private void trackRequest(String request){ System.out.println("Page requested: " + request); } // 分发请求 public void dispatchRequest(String request){ //记录每一个请求 trackRequest(request); //对用户进行身份验证 if(isAuthenticUser()){ dispatcher.dispatch(request); } } } </syntaxhighlight> # 测试类: #: <syntaxhighlight lang="java" line highlight=""> public class FrontControllerPatternDemo { public static void main(String[] args) { FrontController frontController = new FrontController(); frontController.dispatchRequest("HOME"); frontController.dispatchRequest("STUDENT"); } } </syntaxhighlight> # 输出: #: <syntaxhighlight lang="java" line highlight=""> Page requested: HOME User is authenticated successfully. Displaying Home Page Page requested: STUDENT User is authenticated successfully. Displaying Student Page </syntaxhighlight>
返回至“
设计模式:前端控制器模式
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息