public class Controller extends HttpServlet {

  /** Przetworzenie zapytania dla metod GET i POST z HTTP.
   * @param request danie
   * @param response odpowied
   */
  protected void processRequest(HttpServletRequest request,
                                HttpServletResponse response)
                                throws ServletException,
                                java.io.IOException {
    String nextview;
    try {
      LogManager.recordStrategy(request, "Dispatcher View",
        " Strategia serwletu przyjmujcego;" + 
        " Strategia widoku bazujcego na szablonie ;" +
        " Strategia pomocnika jako wasnego znacznika");
      LogManager.logMessage(request, getSignature(), 
        "Przetwarzanie zapytania. ");

      // Uycie obiektu pomocniczego do pobrania informacji 
      // o parametrach.
      RequestHelper helper = new RequestHelper(request, response);
      LogManager.logMessage(request, getSignature()," Autoryzacja");

      Authenticator auth = new BasicAuthenticator();
      auth.authenticate(helper);

      // Upraszczamy tutaj na potrzeby przykadu najprostsz
      // wersj przekazywania. Zazwyczaj nastpuje tutaj 
      // zamiana z nazwy logicznej na nazw zasobu
      LogManager.logMessage(request, getSignature(), 
        "Pobranie nastpnego widoku");
      nextview = request.getParameter("nextview");

      LogManager.logMessage(request, getSignature(), 
        "Przejcie do widoku: " + nextview);
    }
    catch (Exception e) {
      LogManager.logMessage("Odpowiednia obsuga wyjtku", 
        e.getMessage() );


      /** ApplicationResources zapewnia prosty interfejs 
       * pobierania staych i predefiniowanych wartoci**/
      nextview = ApplicationResources.getInstance().
        getErrorPage(e);
    }
    dispatch(request, response, nextview);
  }

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

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

  /** Zwraca krtki opis serwletu. */
  public String getServletInfo() {
    return getSignature();
  }

  public void init(ServletConfig config) throws ServletException {
    super.init(config);
  }

  public void destroy() { }

  /**
   * metoda przekazania sterowania
   */
  protected void dispatch(HttpServletRequest request, 
      HttpServletResponse response, String page) 
      throws javax.servlet.ServletException, java.io.IOException {
    RequestDispatcher dispatcher = 
      getServletContext().getRequestDispatcher(page);
    dispatcher.forward(request, response);
  }

  private String getSignature() {
    return "DispatcherView-Controller"; 
  }
}