Categorías del Tutorial

icono_twiter icono LinkedIn icono Facebook Icono Xing
Roberto Canales Mora

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Ingeniero Técnico de Telecomunicaciones y Executive MBA por el Instituto de Empresa 2007.
Twitter:

Autor de los Libros: Planifica tu éxito: de aprendiz a empresario y Informática profesional, las reglas no escritas para triunfar en la empresa

Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2003-06-16

Tutorial visitado 85.630 veces Descargar en PDF

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 ..

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2008-07-16-12:21:49

Autor:

[Eva] Muchas gracias por c ompartir el conocimiento, nos ayuda a los que estamos aprendiendo un saludo gracias

Fecha publicación: 2006-09-04-09:23:52

Autor:

[Maria Luisa] me parece muy bien su pagina ya que ademas de encontrar lo que buscaba, esta especificado de manera muy entendible, me agrada que son vrebes y que dicen mucho mas nde lo que esperaba de manera muy cencilla y entendible. FELICIDADES

Fecha publicación: 2006-04-25-10:25:18

Autor:

[Jorge Leon] Me parece muy pobre, porque no explica nada de la estructura de directorios, ficheros XML,... Si alguien no sabe seguirá sin saber, y si sabe no creo que esto le aporte nada