public class FrontController extends HttpServlet {
  // Inicjalizacja serwletu.
  public void init(ServletConfig config) throws 
    ServletException {
    super.init(config);
  }

  // Usuwanie serwletu.
  public void destroy() {
  }

  /** Przetwarzanie zapyta dla metod HTTP GET i POST.
   * @param request zapytanie
   * @param response odpowied
   */
  protected void processRequest(HttpServletRequest request,
                                HttpServletResponse response)
                                throws ServletException, java.io.IOException {
    String page;

    /**ApplicationResources zapewnia proste API 
     * pobierania staych i innych wczeniej konfigurowanych wartoci**/
    ApplicationResources resource = ApplicationResources.getInstance();
    try {

      // Utworzenie obiektu kontekstu.
      RequestContext requestContext = new RequestContext(request, response);

      // wywoanie komponentw przetwarzania zapyta w celu obsugi zapyta
      ApplicationController applicationController = new ApplicationControllerImpl();
      ResponseContext responseContext = 
          applicationController.handleRequest(requestContext);

      // wywoanie komponentw przetwarzania odpowiedzi w celu obsugi odpowiedzi
      applicationController.handleResponse(requestContext, responseContext);
    }
    catch (Exception e) {
      LogManager.logMessage("FrontController:wyjtek : " + e.getMessage());
      request.setAttribute(resource.getMessageAttr(), "Wystpienie wyjtku : " +
                           e.getMessage());
      page = resource.getErrorPage(e);
      // przekazanie sterowania do widoku "strona niedostpna"
      dispatch(request, response, page);
    }
  }

  /** Obsuga metody HTTP GET.
   * @param request danie
   * @param response odpowied
   */
  protected void doGet(HttpServletRequest request, 
                       HttpServletResponse response)
                       throws ServletException, java.io.IOException {
      processRequest(request, response);
  }

  /** Obsuga metody HTTP POST.
   * @param request danie 
   * @param response odpowied
   */
  protected void doPost(HttpServletRequest request, 
                        HttpServletResponse response)
                        throws ServletException, java.io.IOException {
        processRequest(request, response);
  }

  protected void dispatch(HttpServletRequest request, 
                          HttpServletResponse response, String page) 
                          throws javax.servlet.ServletException,
                          java.io.IOException {
    RequestDispatcher dispatcher = 
      this.etServletContext().getRequestDispatcher(page);
    dispatcher.forward(request, response);
  }

  /** Zwraca krtki opis serwletu */
  public String getServletInfo() {
    return "Wzorzec Front Controller" +
      "Przykad strategii serwletu przyjmujcego dania";
  }
}
