Quali sono le opzioni di template HTML disponibili in Java come alternativa all'output HTML dal tuo codice servlet?

StackOverflow https://stackoverflow.com/questions/816077

  •  03-07-2019
  •  | 
  •  

Domanda

Dato il seguente servlet Hello World, come è possibile trasferire l'output di Hello World dal codice servlet e inserirlo in una sorta di formato di template HTML? Vorrei semplicemente chiamare il modello dal servlet e farlo visualizzare le variabili Java a cui mi riferisco nel modello, forse facendo riferimento al "Ciao mondo" stringa come variabile di classe nella classe SprogzServlet?

package boochy;

import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class SprogzServlet extends HttpServlet
{
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException
    {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world");
    }
}
È stato utile?

Soluzione

È piuttosto raro eseguire lo sviluppo Web Java senza utilizzare una sorta di framework MVC che delegherà tutte le visualizzazioni a JSP (tranne l'output PDF e altri casi angolari), quindi hai:

Alcuni framework Web come Tapestry e JSF (" Java Server Faces ") sono un po 'più simili alle visualizzazioni HTML con tag extra.

I JSP alla fine sono comunque solo compilati in servlet e tendono ad essere un modulo più conveniente per produrre HTML. In generale, li userei come minimo piuttosto che scrivere un mucchio di istruzioni out.println () in un servlet direttamente.

Altri suggerimenti

Ho usato con successo Velocity per diversi anni in un sito interno su scala molto piccola.

È facile da usare e ha una bella API pulita. Gestisce estremamente bene lo scoppio di attività.

Divertente, ho appena visto una domanda leggermente simile prima. Puoi anche utilizzare le pagine PHP tramite Quercus per il rendering della tua pagina in Java.

cletus è abbastanza corretto nei suoi consigli.

Freemarker (o velocità) sono le soluzioni da utilizzare se "semplicemente" richiede il rendering basato su modello. Sono abbastanza efficaci. È possibile aumentare la scala della complessità e utilizzare JSP.

Non sono d'accordo sul fatto che ciò sia specificamente limitato al modello MVC. Nella sua forma più semplicistica (e chiaramente questo non si ridimensionerà per i sistemi di grandi dimensioni) puoi avere lo stesso servizio servlet per tutte le richieste e scegliere un modello di velocità / freemarker, popolare il contesto richiesto e renderizzare il modello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top