Java前端控制器模式

1 Java前端控制器模式的介绍

前端控制器设计模式用于提供集中式请求处理机制,以便所有请求将由单个处理程序处理。此处理程序可以执行请求的身份验证/授权/记录或跟踪,然后将请求传递到相应的处理程序。 以下是这种类型的设计模式的实体。

  • 前端控制器 :用于处理应用程序(基于Web或基于桌面)的各种请求的单个处理程序。
  • 分发器 : 前端控制器可以使用可以将请求分派到相应的特定处理器的分派器对象。
  • 视图 : 视图是进行请求的对象。

2 Java前端控制器模式好处

  • 前端控制器模式减少了JSP页面中的代码重复,特别是在几种资源需要相同处理的情况下。
  • 前端控制器模式更有效地维护和控制Web应用程序。
  • 一个两层体系结构的Web应用程序,推荐的方法是前端控制器来处理用户请求。

3 Java前端控制器模式的用法

  • 当您要控制页面流向和导航时。
  • 当您要访问和管理数据模型时。
  • 当您要处理业务时。

4 Java前端控制器模式的UML

在这个实现实例中,将创建一个FrontController和Dispatcher作为前台控制器和相应的调度程序。 HomeView和StudentView代表各种视图,请求可以到前端的控制器中。

FrontControllerPatternDemo这是一个演示类,将使用FrontController来演示前控制器设计模式。

5 Java前端控制器模式的案例

5.1 创建两个视图

HomeView.java:

/**
 * 一点教程网: http://www.yiidian.com
 */
public class HomeView {
   public void show(){
      System.out.println("Displaying Home Page");
   }
}

StudentView.java:

/**
 * 一点教程网: http://www.yiidian.com
 */
public class StudentView {
   public void show(){
      System.out.println("Displaying Student Page");
   }
}

5.2 创建分派调度程序

Dispatcher.java:

/**
 * 一点教程网: http://www.yiidian.com
 */
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();
      }    
   }
}

5.3 创建前端控制器 :FrontController

FrontController.java:

/**
 * 一点教程网: http://www.yiidian.com
 */
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){
      //log each request
      trackRequest(request);

      //authenticate the user
      if(isAuthenticUser()){
         dispatcher.dispatch(request);
      }    
   }
}

5.4 使用FrontController来演示前端控制器设计模式

FrontControllerPatternDemo.java:

/**
 * 一点教程网: http://www.yiidian.com
 */
public class FrontControllerPatternDemo {
   public static void main(String[] args) {

      FrontController frontController = new FrontController();
      frontController.dispatchRequest("HOME");
      frontController.dispatchRequest("STUDENT");
   }
}

5.5 输出结果

Page requested: HOME
User is authenticated successfully.
Displaying Home Page
Page requested: STUDENT
User is authenticated successfully.
Displaying Student Page

 

热门文章

优秀文章