Вы находитесь на странице: 1из 8

INTRODUCCION A JAVA SERVER PAGES (JSP)

En las clases anteriores a habamos vistos cmo crear pginas dinmicas usando servlet , la principal desventaja es que mezcla presentacin con el contenido. Por lo tanto un diseador grfico tendra que retocar cdigo fuente java para poder aplicar un diseo en otros casos se necesitara mantener una colaboracin estrecha entre un diseado y un programador para poder dar mantenimiento este tipo de pginas. Por lo tanto solucin son las JSP Estas, como su nombre lo indica son pginas, esta tecnologa propone un cambio al modo en que se desarroll una pgina con java en vez de escribir un servlet que al ejecutarse devuelva contenido tanto estatico como dinamico se propone crear una pgina web con contenido esttico y el dinamico esto a priori Suena casi igual que un servlet sin embargo la diferencia radica en que se separa totalmente el cdigo java del cdigo html veamos un ejemplo. <html> <head> Fecha en JSP</head> <body> Hola <br> La fecha de hoy es:<b><%= new java.util.Date() %></b> </body> </html>

Notemos que el contenido estatico HTML y los contenidos dinamicos JSP. Ahora es importante aclarar que JSP surgio como un especificacin basndose en la necesidad de simplificar el desarrollo de aplicaciones servlet. Cuando tenemos a una pgina jsp por primera vez un traductor se encarga de transformarla en un servlet que se ejecuta por eso notamos que el acceder a un JSP por primera vez despus de haber modificado toma ms tiempo que otras veces en mostrarnos la pgina esto es porque se est transformando y se est compilando. La buena noticia es que al servlet generado se puede acceder fcilmente a un que al ser cdigo generado es de difcil lectura. Por defecto los servlets se guardan en work. L a buena noticia es que jsp puede ser manejada de forma mucho ms eficiente que un servlet.

SINTAXIS JSP 1.1.1. Expresiones: Son fragmentos de cdigo Java, con la forma <%= expresin %> que se evalan y se muestran en la salida del navegador. En general, dentro de una expresin podemos usar cualquier cosa que usaramos dentro de un System.out.print(expr); Ejemplos: <%= "Tamao de cadena: "+cadena.length() %> <%= new java.util.Date() %> <%= Math.PI*2 %> 1.1.2. Scriptlets: Son fragmentos de cdigo Java con la forma <% cdigo %>, en general, podemos insertar cualquier cdigo que pudiramos usar dentro de una funcin Java. Para acceder a la salida del navegador, usamos el objeto implcito out. Ejemplos: <table> <% for (int i=0;i<10;i++) { %> <tr><td> <%=i%> </td></tr> <% } %> </table> 1<% out.println("<table>"); for (int i=0;i<10;i++) out.println("<tr><td>"+i+"</td></tr>"); out.println("</table>"); %>

Si observamos los dos ejemplos anteriores (que hacen lo mismo), podra parecer que la segunda opcin es ms deseable, pero en general hay que evitar el uso de out.println() para elementos HTML. En un proyecto en el que trabajen programadores y diseadores conjuntamente, hay que separar presentacin y cdigo tanto como sea posible. Dentro de un scriptlet podemos usar cualquier librera de Java, incluyendo las propias, lo cual hace que resulte muy sencillo construir interfaces web de entrada y salida para nuestras clases. <% String parametro1=request.getParameter("parametro1"); String parametro2=request.getParameter("parametro2"); MiClase miClase=new MiClase(); String salida=miClase.procesa(parametro1, parametro2); %> <%= salida %> Para introducir comentarios en JSP, usaremos las marcas <%-- comentario --%>, dentro de un scriptlet o declaracin podemos usar comentarios siguiendo la sintaxis de Java. <%-- Comentario JSP --%> <!-- Comentario HTML --> <% // Comentario /* Comentario */ %> 1.1.3. Declaraciones: Contienen declaraciones de variables o mtodos, con la forma <%! declaracin %>. Estas variables o mtodos sern accesibles desde cualquier lugar de la pgina JSP. Hay que tener en cuenta que el servidor transforma la pgina JSP en un servlet, y ste es usado por mltiples peticiones, lo que provoca que las variables conserven su valor entre sucesivas ejecuciones. Ejemplos: <%! int numeroAccesos=0; %> <html>

<body> <%= "La pgina ha sido accedida "+(++numeroAccesos)+ " veces desde el arranque del servidor" %> </body> </html> <%! java.util.Date primerAcceso=new java.util.Date(); %> <html> <body> El primer acceso a la pgina se realizo en: <%= primerAcceso %> </body> </html> 1.1.3. Declaraciones: Contienen declaraciones de variables o mtodos, con la forma <%! declaracin %>. Estas variables o mtodos sern accesibles desde cualquier lugar de la pgina JSP. Hay que tener en cuenta que el servidor transforma la pgina JSP en un servlet, y ste es usado por mltiples peticiones, lo que provoca que las variables conserven su valor entre sucesivas ejecuciones. Ejemplos: <%! int numeroAccesos=0; %> <html> <body> <%= "La pgina ha sido accedida "+(++numeroAccesos)+ " veces desde el arranque del servidor" %> </body>

</html> <%! java.util.Date primerAcceso=new java.util.Date(); %> <html> <body> El primer acceso a la pgina se realizo en: <%= primerAcceso %> </body> </html> <%! private String ahora() { return ""+new java.util.Date(); } %> <html> <body> <%= ahora() %> </body> </html> 1.2. Directivas Las directivas son elementos que proporcionan informacin al motor JSP, e influirn en la estructura del servlet generado. Hay tres tipos de directivas: page, taglib e include. 1.2.1. page: Se indica con la forma <%@ page atributo="valor">. Tiene diversos usos, entre los cuales destacaremos: - Importar clases. Importar cdigo, de la misma forma que se realiza en un programa en Java, se indica con el atributo import. Ejemplo: <%@page import="java.io.*, miPackage.miClase"%>

- Indicar si la pgina tendr acceso a la sesin. Se especifica con el atributo session. El uso de sesiones se ver con ms detalle en el apartado de objetos implcitos. Ejemplo: <%@page session="true" import="java.util.ArrayList"%> - Gestin de errores. Permite redireccionar a una pgina cuando se produzca un error, se indica con los atributos errorPage y isErrorPage. Ejemplos: <%@page errorPage="error.jsp"> [...] <%@page isErrorPage="yes"> <html> <body> Error, contacte con el administrador [...] </body> </html> 1.2.2. include: Permite incluir un archivo en el lugar donde se especifique, al contrario que con la accin <jsp:include> que veremos ms adelante, la directiva include simplemente copia el contenido del archivo byte a byte, siendo el resultado similar a si copiramos el texto del archivo incluido y lo pegramos en el JSP. Ejemplo: <html> <head> <%@ include file="titulo.txt"%> </head> <body> <%@ include file="cuerpoPagina.jsp"%> </body>

</html> 1.2.3. taglib: Se emplea para indicar que se van a emplear libreras de etiquetas. Se ver con ms detalle en el apartado de JSTL. Ejemplo: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 1.3. Acciones Las acciones tienen la forma <jsp:accion [parmetros]/>, y tienen diversos usos, entre los que destacan la inclusin de pginas y transferencia de control. 1.3.1. Inclusin de pginas Se realiza con la accin <jsp:include page="pagina.jsp">. Incluye la salida de otra pgina JSP en la actual, al contrario que con la directiva <%@include file="fichero.ext"%> la pgina incluida se ejecuta y su salida se inserta en la pgina que la incluye, con la directiva se incluye el contenido del archivo (no su salida) y se ejecuta conjuntamente con la pgina principal. La pgina includa tiene acceso a los parmetros enviados a la principal, y podemos enviarle nuevos parmetros con la subetiqueta <jsp:param name="nombre" value="valor"/>. Ejemplo: <html> <head> <jsp:include page="cabecera.jsp"/> </head> <body> <jsp:include page="cuerpo.jsp"> <jsp:param name="tipo" value="paginaPrincipal"/> </jsp:include> </body> </html> 1.3.2. Transferencia de control Se realiza con la accin <jsp:forward page="pagina.jsp"/>. La peticin es redirigida a otra pgina, y la salida de la actual se descarta. Al igual que con la inclusin, la pgina a la que se redirige tiene acceso a los parmetros pasados a la actual, y es posible el envo de nuevos parmetros.

Ejemplo: <jsp:forward page="principal.jsp"> <jsp:param name="titulo" value="Principal"/> </jsp:forward>

Вам также может понравиться