J2HTML Crea código HTML desde Java

La librería J2HTML nos permite generar código HTML utilizando el lenguaje Java, se utiliza de una manera muy sencilla y similar a HTML, antes de empezar solo debemos agregar la dependencia y luego importar TagCreator, veamos una demostración.

Agregar la dependencia Maven:

<dependencies>
    <dependency>
        <groupId>com.j2html</groupId>
        <artifactId>j2html</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

Cómo lo hemos mencionado anteriormente, requerimos importar los siguiente:

import static j2html.TagCreator.*;

Luego podremos usar los correspondientes métodos estáticos, cada uno de ellos lleva el mismo nombre que la etiqueta HTML correspondiente, usando los distintos métodos withXXX(...) podemos establecer los atributos de la etiqueta, XXX corresponde al nombre del atributo, ejemplo: 

StringBuilder html = new StringBuilder();

html(
        header(
                title("Tutor de programacion"),
                link().withRel("stylesheet").withHref("/css/style.css")
        ),
        body(
                h1("J2HTML Tutorial").withClass("title"),
                img().withSrc("/img/imagen.jpg")
        )
).render(html);

El resultado es el siguiente:

<html>
    <header>
        <title>Tutor de programacion</title>
        <link rel="stylesheet" href="/css/style.css">
    </header>

    <body>
        <h1 class="title">J2HTML Tutorial</h1>
        <img src="/img/imagen.jpg">
    </body>
</html>

Integrar J2HTML a un Servlet

No es nada difícil integrar esta librería a un Servlet Java, solo debemos saber que el método render() es el encargado de generar el HTML de salida, con él podemos obtener el String resultante o podemos indicar un objeto que implemente Appendable en donde se escribirá la salida, el objeto HttpResponse posee el método getWriter() que nos devolverá un PrintWriter que implementa la interface antes mencionada.

@WebServlet("/")
public class PrimerServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");

        html(
                header(
                        title("Tutor de programacion")
                ),
                body(
                        h1("J2HTML en Servlet Tutorial"),
                        p("Contenido generado dinamicamente con j2html, creado en 2017"),
                        br(), 
                        a("Tutor de programación").withHref("http://acodigo.blogspot.com")
                )
        ).render(response.getWriter());
    }
}

Al correr nuestro Servlet, obtendremos el siguiente resultado:

Generar HTML con Java en Servlet

Esta biblioteca nos facilita el trabajo con colecciones, disponemos de los métodos each() y filter() que nos permiten iterar a través de un conjunto de datos, por ejemplo:

each(Tutoriales.getAll(), tutorial
        -> div(
        a(tutorial.getNombre()).withHref(tutorial.getEnlace()),
        span(" (" + tutorial.getCantidad() + ")")
        )
)

j2html en servlet

Si desearemos filtrar los tutoriales con cantidades menor a 20 lo haríamos del siguiente modo:

each(filter(Tutoriales.getAll(), t -> t.getCantidad() > 20), tutorial
        -> div(
        a(tutorial.getNombre()).withHref(tutorial.getEnlace()),
        span(" (" + tutorial.getCantidad() + ")")
        )
)

Aun existen muchas más posibilidades, para verlas puedes visitar la página oficial.

Descargar el ejemplo: j2html-servlet.zip

Comentarios

Entradas populares de este blog

Conectar SQL Server con Java

Acceso a la webcam con OpenCV

Procesamiento de imágenes en OpenCV

Entrenar OpenCV en Detección de Objetos

Analizador Léxico