1.1 Introducción a JSP
Hay dos formas populares de escribir un servlet: imperativo y declarativo . Ya hemos tratado con el primero: este es, de hecho, un Servlet. El segundo se llama JSP (Java Server Pages), y ahora nos familiarizaremos con él.
Ejemplo de servlet JSP:
<html>
<body>
<% out.print(2*5); %>
</body>
</html>
No muy parecido al Servlet clásico al que estamos acostumbrados, ¿verdad? Esto es cierto. JSP es una página HTML con inserciones de código Java (resaltado en verde) .
Verá, si tiene mucho código Java en un servlet y poco código HTML, entonces se siente más cómodo usando un servlet clásico . Pero, ¿qué sucede si necesita una página HTML grande en la que el servidor solo cambie un par de líneas?
En este caso, lo más simple sería crear esta página HTML y de alguna manera ejecutar el código Java en el servidor directamente en ella.
1.2 Compilación de JSP
Veamos otro ejemplo:
<html>
<body>
<%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You are lucky, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
Obtenemos un número aleatorio, y si es mayor a 0,95, imprimimos el texto "¡Tienes suerte, usuario!"
El código Java se resalta aquí en azul . Normal (no resaltado): código HTML y rojo: etiquetas de servicio , que ayudan a comprender dónde está el código Java y dónde está el HTML.
¿Notas algo raro? La llave de cierre "}"
está en otro "code block"
. ¿Cuál es la forma correcta de escribir dicho código? ¿Cómo funciona?
La respuesta será súper simple :)
El servidor web, después de encontrar un archivo JSP, lo compila en un servlet clásico. Basado en la página JSP anterior, se generará este Servlet:
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.print("<html> ");
out.print("<body>");
double num = Math.random();
if (num > 0.95) {
out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
}
out.print("</body>");
out.print("</html>");
}
}
¡El contenedor web acaba de generar el código de servlet, donde el HTML se convirtió en texto y las inserciones de código Java se convirtieron en código Java normal!