Java Front Controller [duplikat]

To pytanie ma już odpowiedź tutaj:

Zastanawiam się nad implementacją Front Controllera w mojej aplikacji J2EE. Czy mógłbyś zasugerować to samo z kilkoma linkami (z przykładami kodu źródłowego) i jakimikolwiek standardami do naśladowania?

Pozdrawiam

Author: BalusC, 2010-01-13

2 answers

Aby rozpocząć, Utwórz Servlet, który nasłuchuje na określonym url-pattern, np. /pages/*. Zaimplementuj metodę service(), aby wyszukać akcję powiązaną z metodą żądania(GET, POST, etc) i pathinfo (część adresu URL po serwletach url-pattern).

Przykład podstawowy:

protected void service(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException {
  View view = new View(request, response);
  Action action = ActionFactory.getAction(request);
  action.execute(view);
  view.navigate();
}

Interfejs Action powinien reprezentować jednostkę pracy. Można go zaimplementować, aby wykonać niezbędną logikę biznesową:

public interface Action {
  void execute(View view);
}

ActionFactory powinny utrzymywać klasy implementujące Action w rodzaju Map<String, Action> gdzie klucz String reprezentuje mniej lub bardziej kombinację metody żądania i pathinfo. Można wtedy uzyskać Action w następujący sposób:

public static Action getAction(HttpServletRequest request) {
  return actions.get(request.getMethod() + request.getPathInfo());
}

View powinien reprezentować kontekst żądania, z którym może pracować Action. W pliku navigate() można przesłać żądanie do JSP w celu wyświetlenia:

public void navigate() {
  String path = "/WEB-INF" + request.getPathInfo() + ".jsp";
  request.getRequestDispatcher(path).forward(request, response);
}

To powinno zacząć (zauważ, że zostawiłem wszystkie oczywiste kontrole, takie jak null points away, aby przykłady mniej zaśmiecone, to teraz zależy od Ciebie).

Jest jednak więcej do uwzględnienia w całej historii, takich jak Walidacja, konwersja, obsługa zdarzeń, mapowanie wartości wejściowych, lokalizacja, Wtrysk zależności, itp. To wszystko z całą niezłą pracą. Bardziej przyzwoite frameworki MVC uwzględniają to wszystko, takie jak Sun JSF, Apache Struts, Spring MVC, paski , itd. Jeśli nigdy nie zrobiłeś żadnego z nich, to zdecydowanie polecam zrobić to przed homegrowing po pierwsze, inaczej skończyłbyś ze stratą czasu.

 15
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-20 14:13:29

Sieć jest pełna dojrzałych frameworków java. Nie widzę powodu, aby utworzyć nowy z dwoma wyjątkami: 1. Masz bardzo niestandardowe środowisko / przepływ i potrzebujesz czegoś bardzo, bardzo specyficznego dla Twoich potrzeb. 2. Po prostu chcesz przejść przez ćwiczenie tworzenia frameworka, aby dowiedzieć się o tajnikach rozwoju httpservlet.

JSR 154 definiuje specyfikację serwletów. Znajdź go tutaj: http://jcp.org/en/jsr/detail?id=154

Wiosna to jeden z prądów popularne frameworki i ten, który działa dla mnie. Struts był jednym z pierwszych bardzo popularnych frameworków, który zaczął spadać na popularność. Znajdź dobrą listę frameworków wraz z dyskusją na http://java-source.net/open-source/web-frameworks

 1
Author: labratmatt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-13 21:04:06