2009-05-03 4 views
5

Dado el siguiente servlet Hello World, ¿cómo podría transferir la salida Hello World del código del servlet y ponerlo en algún tipo de formato de plantilla HTML? Me gustaría simplemente llamar a la plantilla desde el servlet y hacer que represente las variables Java a las que me refiero en la plantilla, tal vez refiriéndome a la cadena "Hello World" como una variable de clase en la clase SprogzServlet.¿Qué opciones de plantillas HTML hay en Java como alternativa a hacer salidas HTML desde su código de servlet?

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

Respuesta

5

Es bastante raro estar haciendo desarrollo web Java sin necesidad de utilizar algún tipo de marco MVC que va a delegar todas las vistas a las JSP (aparte de otros casos de esquina PDF de salida y) por lo que tiene:

Algunos marcos de internet como Tapestry y JSF ("Java Server Faces") son un poco más como puntos de vista HTML con etiquetas adicionales.

En última instancia, los JSP solo se compilan a los servlets y tienden a ser una forma más conveniente para generar HTML. En términos generales, los usaría como mínimo en lugar de escribir un montón de declaraciones out.println() en un servlet directamente.

+0

Gran respuesta. Gracias por toda la información. Me gusta el aspecto de Apache Velocity. Eso se ve cerca de las opciones de plantillas de Ruby que estaba tratando de aproximar (erb, haml). JSF es un poco como CFML. Freemarker, no estoy seguro, el sitio web no se ve tan profesional, me pone nervioso. Tapestry parece involucrado, tiene que estudiar sobre eso. Puedo terminar pegándome con JSPs como insinuaste. Gracias. – Yen

0

cletus es bastante correcto en sus recomendaciones.

Freemarker (o velocidad) son las soluciones que debe usar si "simplemente" requiere representación basada en plantilla. Ellos son bastante efectivos. Puede subir la escala de complejidad y usar JSPs.

No estoy de acuerdo en que esto se limite específicamente al patrón MVC. En su forma más simplista (y claramente esto no se ampliará para sistemas grandes) puede tener todas las solicitudes del mismo servicio de servlet, y elegir una plantilla de velocidad/marca libre, y completar el contexto requerido y representar la plantilla.

1

Es curioso, acabo de ver una pregunta algo similar antes. También puede usar páginas PHP a través del Quercus para la representación de su página en Java.

2

He utilizado satisfactoriamente Velocity durante varios años en un sitio interno de muy pequeña escala.

Es fácil de usar y tiene una API limpia y agradable. Maneja la explosión de actividad extremadamente bien.

Cuestiones relacionadas