servlets y jsp - experto java · • un jsp es html + java insertado • un servlet es java + html...

20
Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-1 Especialista Universitario Java Enterprise Servlets y JSP Sesión 6: JSP Básico

Upload: phungkiet

Post on 30-Dec-2018

241 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-1

Especialista Universitario Java Enterprise

Servlets y JSP

Sesión 6: JSP Básico

Page 2: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-2

Puntos a tratar• Introducción a los JSP• Elementos de JSP

• Código Java• Objetos implícitos

• Directivas • Acciones• Servlets y JSPs

Page 3: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-3

Introducción a los JSP• Código Java en páginas HTML

<html><head><title>Mi primera página JSP</title></head><body><h1> Hola, <%= request.getParameter("nombre") %>Hoy es: <%= new java.util.Date() %> </h1></body></html>

Page 4: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-4

Comparación con los servlets• En apariencia

• Un JSP es HTML + Java Insertado• Un Servlet es Java + HTML insertado

• En realidad• Los JSP se traducen internamente a servlets

El servidor web tiene una “plantilla de servlet”Inserta nuestro código JSP dentroLo guarda en un directorio especialLo compila y ejecutaEn sucesivas llamadas a la página, solo hace falta

ejecutar el servlet, salvo que se modifique el código del JSP comenzar de nuevo

Page 5: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-5

Elementos de JSP

• Código Java • Sentencias (scriptlets) <% tam = 1; %>• Declaraciones <%! int i = 0; %>• Expresiones <%= new Date() %>

• Directivas: para “afinar” el servlet generado

• Acciones: alteración del flujo de ejecución (normalmente)

Page 6: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-6

Scriptlets<%

Calendar ahora = Calendar.getInstance(); int hora = ahora.get(Calendar.HOUR_OF_DAY);

%><b> Hola mundo, <i> <% if ((hora>20)||(hora<6)) { %>

buenas noches <% }

else if ((hora>=6)&&(hora<=12)) { %>buenos días

<% } else { %>

buenas tardes<% } %> </i> </b>

Page 7: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-7

Declaraciones• Las variables o métodos declarados se insertan

en el cuerpo del servlet generado se conservan entre peticiones

<%! private int accesos = 0; %><% ++accesos; %>

• Se pueden sobreescribir los métodos jspInity jspDestroy equivalentes al init y destroy de los servlets

Page 8: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-8

Expresiones

• Su valor se evalúa, se convierte a cadena y se imprime en el Writer del servlet, con un writeo similar

<b> Esta pagina ha sido visitada <%= visitas %> vecesHoy es <%= new java.util.Date() %>

</b>

Page 9: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-9

Objetos implícitos• Variables definidas en la “plantilla” de servlet

para JSP, por tanto accesibles a nuestro código

• Objetos• request (HttpRequest), response (HttpResponse)• out: el writer para enviar la salida al cliente• session: HttpSession• application: ServletContext• config: ServletConfig• pageContext• exception

Page 10: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-10

Directivas• Influyen en la estructura que tendrá el servlet

generado

<%@ directiva atributo=“valor” %>

• Tipos• page: usos variados• include: equivalente al #include de C• taglib: para usar librerías de etiquetas

Page 11: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-11

La directiva page: atributos

• import (= import de Java)

<%@page import=“java.util.*, java.sql.*” %>

• contentType (= response.setContentType() )

<%@page contentType=“text/html” %>

• isThreadSafe (= implements SingleThreadModel)

• session (defecto: true)

Page 12: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-12

La directiva page: atributos (II)• buffer: ¿Qué hay de raro en esta página JSP?

¿Cómo es que funciona?

<html><head>

<title>Untitled</title></head><body><%@ page contentType="text/plain" %><h1> Hola </h1></body></html>

Page 13: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-13

La directiva page: tratamiento de errores• Saltar a una página de error en caso de que se

produzca una excepción• En todas las páginas del sitio (menos la de

error):

<%@page errorPage=“error.jsp” %>

• En la página de error:<%@page isErrorPage=“true” %>

• Esto último hace accesible el objeto implícito exception

Page 14: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-14

La directiva include• Equivalente al #include de C• El código se incluye antes de la compilación del

servlet y se compila todo junto• Problema: J2EE no exige que si cambia el

código incluido el servidor tenga que volver a componer el servlet

• Usos• Definir variables• Influir en la respuesta

Page 15: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-15

Acciones: <jsp:include>• Incluye en una página la salida generada por

otra

• Cambios en lo incluido no obligan a recompilar el “principal”

petición

respuesta

petición

respuesta

Page 16: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-16

Acciones: <jsp:include> (II)• Sintaxis

<jsp:include page=“URL relativa” flush=“true | false” />

• Pasarle parámetros a la página incluida• Recibe el request (parámetros originales)• Parámetros adicionales:

<jsp:include page=“cabecera.jsp” flush=“false” >

<jsp:param name=“color” value=“red”/></jsp:include>

Page 17: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-17

Acciones: <jsp:forward>

• Redirige la petición a otra página

• Lo que haya en el buffer se descarta

petición

respuesta

petición

Page 18: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-18

Acciones: <jsp:forward> (II)• Sintaxis

<jsp:forward page=“URL relativa”/>

• Pasarle parámetros a la página incluida: idemal <jsp:include>• Recibe el request (parámetros originales)• Parámetros adicionales:

<jsp:forward page=“principal.jsp”><jsp:param name=“privilegios” value=“root”/>

</jsp:include>

Page 19: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-19

Comunicación entre servlets y JSPs• Servlets y JSPs son complementarios

• Servlets para programación• JSPs para presentación

• Podemos invocar JSPs desde nuestro servletpara generar la presentación una vez procesados los datos• Utilizaremos forward para invocar los JSPs

• Podemos pasar parámetros de distintas formas• A través de la petición (atributos de la petición)• En el ámbito de la sesión (atributos de sesión)• En al ámbito de la aplicación (atributos del contexto)

Page 20: Servlets y JSP - Experto Java · • Un JSP es HTML + Java Insertado • Un Servlet es Java + HTML insertado ... Ciencia de la Computación e IA JSP Básico-19 Comunicación entre

Especialista Universitario Java Enterprise

Servlets y JSP © 2006-2007 Depto. Ciencia de la Computación e IA JSP Básico-20

• Generamos los datos en nuestro servlet y los incluimos como atributo del objeto de la peticiónMiClase datos = generaDatos();request.setAttribute("nombre", datos);

• Hacemos una redirección al JSP, indicando el objeto de petición (request) en el que hemos añadido los datosrd.forward(request, response);

• Desde el JSP, podemos leer los datos obteniendo el correspondiente atributo del objeto de la petición<% MiClase valor=(MiClase)request.getAttribute("nombre"); %>

Paso de parámetros en la petición