2010-01-13 9 views
6

Sto pensando di implementare Front Controller nella mia applicazione J2EE. Potresti suggerire lo stesso con pochi link (con esempi di codice sorgente) & eventuali standard da seguire?Java Front Controller

migliori saluti

+0

E il framework Spring MVC? http://www.springsource.org/ –

+4

J2EE è sostituito da Java EE da più di 3 anni. Tieniti aggiornato. – BalusC

+0

Sì, lo so, ma generalmente vado con quello ... comunque grazie. – user237865

risposta

15

Per iniziare, crea un Servlet che ascolti su un certo url-pattern, ad es. /pages/*. Implementare il metodo service() per cercare l'azione associata al metodo di richiesta (GET, POST, ecc.) E pathinfo (la parte URL dopo il servlet url-pattern).

Esempio di base:

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(); 
} 

L'interfaccia Action dovrebbe rappresentare unità di lavoro. È possibile implementare per fare la logica di business necessaria:

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

Il ActionFactory dovrebbe mantenere le classi di attuazione Action in una sorta di Map<String, Action> in cui la chiave String rappresenta più o meno una combinazione del metodo di richiesta e pathinfo. È quindi possibile ottenere una Action come segue:

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

Il View dovrebbe rappresentare la richiesta con scope contesto che la Action può lavorare con. Nella navigate() si può inoltrare la richiesta ad una JSP per la visualizzazione:

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

Che dovrebbe iniziare (notare che ho lasciato tutti i controlli evidenti come puntatori nulli via per fare gli esempi meno denso, che sta a voi adesso).

C'è ancora molto altro da tenere in considerazione nell'intera storia, come la convalida, la conversione, la gestione degli eventi, le mappature dei valori di input, la localizzazione, l'iniezione delle dipendenze, eccetera. Questo è tutto con un bel lavoro. I framework MVC più decenti prendono in considerazione gran parte di tutto questo, come ad esempio Sun JSF, Apache Struts, Spring MVC, Stripes, eccetera. Se non ne hai mai fatto nessuno, ti raccomando caldamente di farlo prima di dartene uno, altrimenti finirebbe con una perdita di tempo.

+0

Quando ho letto questa documentazione su Spring MVC, parla sempre del motore Servlet come Tomcat. Fa qualcosa di diverso se il mio motore servlet è Glassfish? Glassfish legge il contenuto di web.xml? –

+0

@Harry: la primavera è un po 'anti-sole. – BalusC

+0

ohhh dio, triste notizia –

1

Il web è pieno di maturi framework Java Web. Non riesco a vedere un motivo per crearne uno nuovo con due eccezioni: 1. Hai un ambiente/flusso molto non standard e hai bisogno di qualcosa di molto, molto specifico per le tue esigenze. 2. Devi semplicemente passare attraverso l'esercizio della creazione di un framework per conoscere i dettagli dello sviluppo di httpservlet.

JSR 154 definisce le specifiche del servlet. Trovalo qui: http://jcp.org/en/jsr/detail?id=154

La primavera è uno degli attuali framework popolari e quello che funziona per me. Struts è stato uno dei primi framework molto popolari che ha iniziato a declinare in popolarità. Trova una buona lista di quadri insieme a discussione a http://java-source.net/open-source/web-frameworks

Problemi correlati