JSPs en Tomcat y MVC
La creación de JSP es algo bastante trivial. Vamos a describir es este
tutorial como se construyen JSPs y se ejecutan en Tomcat.
Posteriormente hablaremos del famoso modelo vista controlado …. y de temas
más avanzados como las librerías de Tags
Lo primero es descargarse Tomcat y arrancarlo.
No olvidar que tenemos que tener JAVA_HOME apuntando al directorio donde
tenemos instalado el JDK
Ejecutamos el comando startup.bat
Y comprobamos que todo funciona correctamente
Empezamos construyendo nuestro primer JSP. Lo vamos a llamar
otro.jsp y lo vamos a colgar del WebApp por defecto (ROOT)
Vemos que se ejecuta
Internamente, un JSP gerena un Servlet. Podemos incluso ver el
código que realmente se genera. (esto no lo necesitan saber los usuarios
noveles aunque es muy importante a posteriori para depuraciones avanzadas)
package org.apache.jsp;
import javax.servlet.*; public class otro_jsp extends HttpJspBase { private static java.util.Vector _jspx_includes; public java.util.List getIncludes() { public void _jspService(HttpServletRequest request, HttpServletResponse response) JspFactory _jspxFactory = null;
try { |
Como podemos comprobar, un JSP es un pequeño artificio que
sigue toda la lógica de los servlets.
En una aplicación normal, lo primero que tenemos que hacer es
recoger parámetros de la petición que nos han realizado.
<html> <h1>Esto es otro ejemplo</h1> <% String cadena = request.getParameter(«cadena»); %> <h2>La cadena recogida es: </h2> <%= cadena %> </html> |
Cuando se construyen aplicaciones con JSP´s hay que procurar
desacoplar la lógica de presentación de la lógica de negocio. Para esto, se
suele utilizar el denominado esquema modelo-vista-controlador (veremos esto
en otro tutorial donde hablaremos de Patrones de Diseño).
En otras palabras, lo que realizamos es una consulta a un
componente (normalmente un servlet) que realiza las labores complejas y delega
sobre un JSP la labor de presentación (dejándole en variables de sesión o
petición los valores a ser presentados).
Vamos a crear un Servlet que tenga este comportamiento
import javax.servlet.*; import javax.servlet.http.*; public class ejemploMvc extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) try |
Nuestro JSP, para recoger estos valores deben tener la siguiente
forma:
<html> <head> <title>Ejemplo de modelo-vista-controlador</title> </head> <body> |
Invocamos
También podríamos haber escrito así el JSP
<html> <head> <title>Ejemplo de modelo-vista-controlador simple</title> </head> <body> |
A su vez, tambien podemos redirigir desde un jsp a otro JSP o servlet,
utilizando
<jsp:forward page=»/jsp/otro.jsp»/> |