public class RequestProcessor {
  public void process(HttpServletRequest request,
                      HttpServletResponse response,
                      throws IOException, ServletException {
 
    // identyfikacja id polecenia (cieki) z obiektu dania
    String path = processPath(request, response);
    ...
    // identyfikacja mapy polecenia na podstawie id
    ActionMapping mapping = processMapping(request, response, path);
    if(mapping == null) {
      return;
    }
 
    // autoryzacja uytkownika bazujca na ustawieniach bezpieczestwa mapy
    if (!processRoles(request, response, mapping)) {
      return;
    }
 
    // identyfikacja obiektu kontekstu polecenia z CommandMap
    ActionForm form = processActionForm(request, response, mapping);
 
    // wypenienie obiektu kontekstowego daniem
    processPopulate(request, response, form, mapping);
 
    // walidacja stanu z obiektu kontekstowego
    if(!processValidate(request, response, form, mapping)) {
      return;
    }
    // utworzenie lub pobranie instancji polecenia w celu przetworzenia dania
    Action action = processActionCreate(request, response, mapping);
    if (action == null) {
      return;
    }
    ...
 
    // wykonanie polecenia i pobranie ViewHandle
    ActionForward forward = action.execute(mapping, form, request, response);
 
    // przekazanie do odpowiedniego widoku przy uyciu ViewHandle
    processActionForward(request, response, forward);
 
  }
  
  // obsuga uchwytu
  protected void processActionForward(HttpServletRequest request,
                                      HttpServletResponse response,
                                      ActionForward forward)
                                      throws IOException, ServletException {
    ...
    // przekazanie do widoku
    RequestDispatcher rd = getServletContext().getRequestDispatcher(uri);
    rd.forward(request, response);
    ...
 
  }
}
