Example 6.36 Implementing Command Handler strategy: FrontController
public class FrontController extends HttpServlet {
  . . .

  /** Processes requests for both HTTP <code>GET</code> and
    * <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
  protected void processRequest(HttpServletRequest request,
      HttpServletResponse response)
          throws ServletException, java.io.IOException {

    // Create ApplicationController for handling incoming request
    ApplicationControllerFactory ACFactory = 
        ApplicationControllerFactory.getInstance();
    ApplicationController applicationController = 
        ACFactory.getApplicationController(request);
    applicationController.init();

    // Create ContextObject to encapsulate protocol-specific 
    // request state
    RequestContextFactory requestContextFactory = 
        RequestContextFactory.getInstance();
    RequestContext requestContext =
        requestContextFactory.getRequestContext(request);

    // Action Management - Locate & Invoke Actions to handle specific
    // Requests
    ResponseContext responseContext;
    responseContext =
        applicationController.handleRequest(requestContext);
    responseContext.setResponse(response);

    // View Management - Navigate and Dispatch to appropriate View
    applicationController.handleResponse(requestContext,
        responseContext);
    applicationController.destroy();
  }
  . . .
}