Java Front Controller [duplikat]
To pytanie ma już odpowiedź tutaj:
- Design Patterns web based applications [closed] 5 odpowiedzi
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
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.
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
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