En el mundo del desarrollo web, es fundamental conocer las diversas tecnologías y herramientas que nos permiten crear aplicaciones dinámicas y eficientes. Una de estas tecnologías es JSP, o JavaServer Pages. En este artículo, exploraremos qué es un fichero JSP, sus características, y cómo se utiliza para desarrollar páginas web dinámicas. Algo que hoy no esta de moda pero que en aplicaciones más antiguas es un standard y los mantenimientos abundan.
Introducción a JSP
JavaServer Pages (JSP) es una tecnología basada en Java que permite a los desarrolladores crear contenido web dinámico. Los ficheros JSP combinan HTML (o cualquier otro contenido basado en texto) con código Java, lo que permite generar páginas web que pueden cambiar su contenido de acuerdo con la lógica del servidor.
Características de un Fichero JSP
- Extensión de Archivo: Los ficheros tienen la extensión .jsp.
- Combinación de HTML y Java: Un archivo contiene código HTML junto con fragmentos de código Java, permitiendo la generación de contenido dinámico.
- Compilación y Ejecución: Cuando se solicita una página JSP, el servidor web la convierte en un servlet (un programa Java), que luego se compila y ejecuta para generar el HTML que se envía al navegador.
- Uso de Scriptlets, Expresiones y Declaraciones: utiliza scriptlets (<% %>), expresiones (<%= %>) y declaraciones (<%! %>) para integrar código Java en el HTML.
Vamos a ver un par de ejemplos sencillos el primero manejo de una variable :
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JSP</title>
</head>
<body>
<h1>Hola, JSP!</h1>
<%
// Código Java
String mensaje = "Bienvenido a JSP!";
%>
<p><%= mensaje %></p>
</body>
</html>
Este generará el siguiente código:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JSP</title>
</head>
<body>
<h1>Hola, JSP!</h1>
<p>Bienvenido a JSP!</p>
</body>
</html>
Java Server Page For Loop con una tabla de multiplicar del 7:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Tabla de Multiplicar del 7</title>
</head>
<body>
<h1>Tabla de Multiplicar del 7</h1>
<table>
<tr>
<th>Multiplicación</th>
<th>Resultado</th>
</tr>
<%
for (int i = 1; i <= 10; i++) {
int resultado = 7 * i;
%>
<tr>
<td>7 x <%= i %></td>
<td><%= resultado %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
Esto nos generará una tabla html con la tabla de multiplicar del 7:
<!DOCTYPE html>
<html>
<head>
<title>Tabla de Multiplicar del 7</title>
</head>
<body>
<h1>Tabla de Multiplicar del 7</h1>
<table>
<tr>
<th>Multiplicación</th>
<th>Resultado</th>
</tr>
<tr>
<td>7 x 1</td>
<td>7</td>
</tr>
<tr>
<td>7 x 2</td>
<td>14</td>
</tr>
<tr>
<td>7 x 3</td>
<td>21</td>
</tr>
<tr>
<td>7 x 4</td>
<td>28</td>
</tr>
<tr>
<td>7 x 5</td>
<td>35</td>
</tr>
<tr>
<td>7 x 6</td>
<td>42</td>
</tr>
<tr>
<td>7 x 7</td>
<td>49</td>
</tr>
<tr>
<td>7 x 8</td>
<td>56</td>
</tr>
<tr>
<td>7 x 9</td>
<td>63</td>
</tr>
<tr>
<td>7 x 10</td>
<td>70</td>
</tr>
</table>
</body>
</html> Muchas veces los nuevos programadores consideran que JSP es una tecnología más sencilla que los Servlets pero hay que recordar que un JSP se acaba convirtiendo a través de un compilador en un Servlet que se ejecuta. Ya que Java lo que puede procesar son clases:
A continuación mostramos como sería el código de JSP convertido en un Servlet:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
@WebServlet("/tablaMultiplicar")
public class TablaMultiplicarServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Establecer el tipo de contenido como HTML
response.setContentType("text/html; charset=UTF-8");
// Obtener el writer para enviar la respuesta HTML
PrintWriter out = response.getWriter();
// Iniciar la construcción del HTML
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Tabla de Multiplicar del 7</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Tabla de Multiplicar del 7</h1>");
out.println("<table>");
out.println("<tr>");
out.println("<th>Multiplicación</th>");
out.println("<th>Resultado</th>");
out.println("</tr>");
// Lógica para generar la tabla de multiplicar
for (int i = 1; i <= 10; i++) {
int resultado = 7 * i;
out.println("<tr>");
out.println("<td>7 x " + i + "</td>");
out.println("<td>" + resultado + "</td>");
out.println("</tr>");
}
// Cerrar las etiquetas HTML
out.println("</table>");
out.println("</body>");
out.println("</html>");
}
}
Explicación del código del servlet:
- Servlet Anotado: Usamos la anotación @WebServlet(“/tablaMultiplicar”) para asociar este servlet con la URL /tablaMultiplicar.
- doGet Method: Este método maneja solicitudes HTTP GET. Se establece el tipo de contenido como “text/html” y se usa PrintWriter para escribir directamente el HTML en la respuesta.
- Generación del HTML: En el servlet, el HTML se genera de manera programática, con un bucle que calcula y muestra la tabla de multiplicar del 7.
Este enfoque es útil para convertir lógicas complejas que se implementaron originalmente en JSP a servlets, dándole mayor control sobre el código Java en aplicaciones web.