JSP´s y Modelo-Vista-Controlador

0
95398

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.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;

public class otro_jsp extends HttpJspBase {

private static java.util.Vector _jspx_includes;

public java.util.List getIncludes() {
return _jspx_includes;
}

public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {

JspFactory _jspxFactory = null;
javax.servlet.jsp.PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;

JspWriter
out = null;
Object page = this;
JspWriter _jspx_out = null;

try {
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType(«text/html;charset=ISO-8859-1»);
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;


out.write(«<html>\r\n»);
out.write(«<h1>Esto es otro ejemplo»);
out.write(«</h1>\r\n»);
out.write(«</html>»);

} catch (Throwable t) {
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
out.clearBuffer();
if (pageContext != null) pageContext.handlePageException(t);
} finally {
if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);
}
}
}

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 
{
request.setAttribute («edad», «24»);
getServletConfig().getServletContext().getRequestDispatcher(«/jsp/muestra.jsp»).forward(request, response);

catch (Exception ex) 
{
ex.printStackTrace ();
}
}
}

 

Nuestro JSP, para recoger estos valores deben tener la siguiente
forma:

<html>
<head>
<title>Ejemplo de modelo-vista-controlador</title>
</head>

<body>
El parámetro que nos han pasado es 
<% out.print (request.getAttribute(«edad»).toString()); %>
</body>
</html>

Invocamos

 

También podríamos haber escrito así el JSP

<html>
<head>
<title>Ejemplo de modelo-vista-controlador simple</title>
</head>

<body>
El parámetro que nos han pasado es:
<b><%= request.getAttribute(«edad») %> </b>
</body>
</html>

A su vez, tambien podemos redirigir desde un jsp a otro JSP o servlet,
utilizando

<jsp:forward page=»/jsp/otro.jsp»/>

 

Sobre el
Autor ..

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad