This document was ed by and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this report form. Report 3b7i
Hello, world <% } else { %>
Goodbye, world <% } %> <...>
Ejercicios • [SFJ1]: Escribir aplicaciones web con páginas JSP que se comportan como las de los ejercicios [SERV1], [SERV2] y [SERVCONT1]. • [OPJ] (opcional): Escribir una aplicación web formada por una página JSP que defina una calculadora con dos memorias numéricas.
Lenguaje de expresiones (UEL) • Es un lenguaje de script interpretado que integra el a la información disponible en la página JSP • Es una alternativa simplificada a la evaluación de expresiones Java • Las expresiones UEL pueden aparecer como atributos de expresiones JSP (HTML, etiquetas) o como texto estático que forma parte del contenido de la página
Lenguaje de expresiones, II • Ejemplo: ${title1} • Las expresiones UEL se evalúan por un contenedor web en una máquina virtual Java. • Los valores de las expresiones UEL son referencias a objetos Java que pueden ser JavaBeans, colecciones, enumeraciones o determinados objetos especiales (objetos implícitos) u objetos simples (números, Strings). • Los resultados de la evaluación de las expresiones UEL se traducen al tipo apropiado (String en los dos ejemplos anteriores)
Lenguaje de expresiones, III • Se pueden definir variables UEL mediante la etiqueta c:set: • Ejemplo:
UEL: Evaluación de expresiones simples • Prioridades en la resolución de expresiones simples: – Variables UEL – Objetos implícitos (ver próxima transparencia) – Atributos del ámbito de la página – Atributos del ámbito de la petición – Atributos del ámbito de la sesión – Atributos del ámbito de la aplicación – Null
UEL: Objetos implícitos • • • • •
pageContext initParam[“name”] param[“name”] paramValues[“name”] header[“name”]
• • • • • •
headerValues[“name”] cookie[“name”] pageScope requestScope sessionScope applicationScope
UEL: Evaluación de expresiones simples, II • • •
•
Ejemplos: ${session} se refiere en general a pageContext.getAttribute(“session”) ${request} se refiere en general a pageContext.getAttribute(“request”) ${response} se refiere en general a pageContext.getAttribute(“response”) ${Id} puede referirse a session.getAttribute(“Id”)
UEL: Evaluación de expresiones compuestas • La expresión ${obj.atr} equivale a ${obj[“atr”]}. • Resolución de expresiones compuestas de la forma ${obj.atr}: – Si ${obj} es un contexto: obj.getAttribute(“atr”) – Si ${obj} es un JavaBean: obj.getAtr()
• Mecanismo de resolución en la evaluación de expresiones UEL: Resolvers y reflexión. • La resolución de expresiones se efectúa solamente la primera vez que se evalúan.
Expresiones UEL: Tipos de evaluación • La evaluación de expresiones UEL puede ser inmediata (${ … }) o diferida (#{ … }). • La evaluación diferida se aplica en casos especiales: – Asignación de valores a variables:
Ejercicio • [ACC1] Obligatorio: Aplicación web con una página JSP que muestra una lista HTML con las horas de dentro de la misma sesión, y un botón “Acceder otra vez”.
Depuración • El carácter dinámico de las páginas JSP y el hecho de que generen un servlet que se compila tras el despliegue de la aplicación dificultan su depuración. • Se puede compilar directamente una página JSP para generar el servlet correspondiente • Se puede ver el código Java del servlet (durante la ejecución de la aplicación).
Depuración, II • Se pueden poner puntos de parada en la página JSP (no en el código del servlet). • Se puede hacer una llamada a una página JSP determinada o a un servlet con los parámetros deseados.
Depuración, III • Se puede monitorizar la cadena de peticiones http realizadas dentro de una aplicación mediante el Http Monitor, y explorar su estado en cada paso. • Se puede revisar el log (registro de eventos) del servidor para ver detalles acerca de los errores y de la ejecución de la aplicación.
Biblioteca de etiquetas: JSTL • Sintaxis tipo XML • Se traducen en invocaciones a código Java • Ejemplo: <jsp:useBean id="help“ scope="request" class="ConverterBean" /> // scope: request | session | application // Proporciona a variable en Java
• Se necesita una directiva para hacerlas accesibles: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL: Ejemplos • El ejemplo de la transparencia anterior, <jsp:useBean id="help“ scope="request" class="ConverterBean" /> se traduce a <% request.setAttribute(“help”, new ConverterBean() %> salvo optimizaciones.
JSTL: Ejemplos, II • <jsp:setProperty name="limite" property="valor" value="10" /> se traduce a <% limite.setValor(10); %> •
Etiquetas estándar JSP • Tipos: core (c), XML (x), bases de datos (sql), internacionalización (fmt), funciones (fn) • Hay que incluir una directiva por cada tipo que se utilice. • Información asociada: Variables UEL, guardadas en atributos (principal: var=”…”) – Ejemplo:
Etiquetas estándar JSP: Core • Variables: –
• Control de flujo: –
Etiquetas estándar JSP: Core, II • Control de flujo, II: –
|
|