Java EE JavaServer Pages (JSP)



Documentos relacionados
Contiene código HTML normal junto elementos especiales de JSP. Internamente, el servidor de aplicaciones las compilará a un servlet

JSP Básico. Índice. 2 Traducción de los JSP a servlets Acciones Introducción a JSP... 2

Formato para prácticas de laboratorio

Curso Java Web (JSP's/Servlets)

Escribir código HTML en los servlets es tedioso. que hay que utilizar las instrucciones print, println, etc. Es decir, HTML está dentro de java.

Laboratorio de Aplicaciones Telemáticas

Elementos sintácticos de una JSP.

Agosto. Un primer JSP. Guía rápida. [ h t t p : / / w w w. o p e n b o x e r m b. c o m / j a v a. p h p ]

Formatos para prácticas de laboratorio

Mario Muñoz Organero & Norberto Fernández * Departamento de Ingeniería Telemática

Curso Desarrollo Java Web con JSP, Servlets y el MVC

Arquitectura J2EE para aplicaciones web. Aplicaciones web con JSP. Arquitectura J2EE: Capa de Acceso Web. Arquitectura J2EE: Capa Cliente

ISJu: Técnicas de Programación Cartilla Teórica-Práctica Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat"

Sistemas de Información 12/13 Servlets y JSPs (Java Server Pages)

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat

Web Tier en JAVA. Nicolás Troncoso Carrère. Valparaíso, ILI 258 Departamento de Informática Universidad Técnica Federico Santa María

Java 2 Enterprise Edition

Seguridad de la aplicación para servlets y JSP (página activas java)

Requisitos. Universidad ORT Arquitectura de Software

Curso de JavaServer Faces

4. DESARROLLO WEB CON JAVA JSP & SERVLETS

JavaBeans y JavaServer Pages: Guía rápida. Manuel Urueña

07 Java EE Tarea 7. Laboratorio de proyectos de tecnologías de la información III Prof. Emmanuel Oropeza Gonzalez

Universidad Tecnológica del Valle del Mezquital. Desarrollo de Aplicaciones Web. Manual JSP

Java Servlets. Luis Fernando Llana Díaz. 17 de abril de Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos

Introducción al desarrollo web (idesweb)

Desarrollo de Aplicaciones Informáticas

Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP

INTRODUCCIÓN N A LAS APLICACIONES WEB Y TECNOLOGÍA A JAVA

aplicaciones web: ASP, CFM, JSP y PHP

Aplicaciones web construidas a base de componentes:

Clase Java que implementa un modelo de programación peticiónrespuesta. Puede usarse para procesar cualquier tipo de petición

API de java. ( Guía de alumno Laboratorio 9. Recursos disponibles en moodle para este día.

Conexión de Mysql con NetBeans

Introducción al lenguaje Java

Integración Capa Web de pojo-miniportal (1)

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

apa de presentación: JSP Copyright Universidad de Alicante JSP básico 1 Capa de presentación: JSP Sesión 1: JSP Básico

TEMARIO. 4-Servlet Definición de servlet El Web Container y el ciclo de vida de los servlets El ciclo request- response.

Ejemplos de Servlet y JSP Web Application Development

FUNCIONAMIENTO: FUNCIONALIDAD

Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP. 1. Introducción a JSP... 2

JSP (I) Aplicaciones Distribuidas

EXTENSIÓN DE UML PARA APLICACIONES WEB

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

Java Avanzado Facultad de Ingeniería. Escuela de computación.

JSP(JAVA SERVER PAGES)

Unidad IV: Servlets. Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet.

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Tutorial Web Dinámica con Servlets y JSP Sesion 3

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

Arquitectura Java Web. Ing. Juan Zevallos Valle

Facultad de Ingeniería Escuela de Ciencias y Sistemas Estructura de Datos Guatemala 2013 JSF + JSP + RichFaces

Capítulo III. Análisis y diseño.

JavaScript como Orientación a Objetos

Aplicaciones Web (Curso 2015/2016)

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

INSTITUTO DE ESTUDIOS SUPERIORES DEL ISTMO DE TEHUANTEPEC Tema 1: Programación Orientada a Objetos en PHP

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Práctica de introducción a

Configuración servidor Tomcat

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

DESARROLLO WEB EN ENTORNO CLIENTE

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts Depto. Ciencia de la Computación e IA

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

Ejercicios de validación e internacionalización

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Quickstart-Webapps-Spring

Programación Orientada a Objetos en Java

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

Presentación de la asignatura

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

ATLAS MANUAL DE USUARIO COMPONENTE CODIGO DE BARRAS

1. Aplicaciones del J2SE SDK1.4.2 de Sun.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Diplomado Java Web Programming with Servlets, JSP, JSF & Ajax

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Implementación CAPÍTULO 4

CAPÍTULO 14. DESARROLLO

Práctica sobre compartición de instancias remotas.

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS

Transcripción:

Java EE JavaServer Pages (JSP) Aplicaciones Web/Sistemas Web Juan Pavón Mestras Dep. Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense Madrid Material bajo licencia Creative Commons Java EE Servlets y JSPs Servlet Muy útiles para leer cabeceras de mensajes, datos de formularios, gestión de sesiones, procesar información, etc. Pero tediosos para generar todo el código HTML El mantenimiento del código HTML es difícil JSP (JavaServer Pages) Fichero con código (X)HTML que incluye scripts codificados en Java Permite usar (X)HTML para definir gran parte de la página E introducir código Java en las partes dinámicas de la página Mediante etiquetas especializadas (Custom Tags) que amplían la sintaxis de HTML Se compila y se convierte en un servlet (solo la primera vez que se invoca) Se ejecuta como un servlet Con JSP es más fácil que se distribuya la tarea de diseño de la página web y la programación de la aplicación web Juan Pavón - UCM 2012-13 JSP 2

JSP y servlets Los servlets tienen que generar todo el código HTML response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println ("<!DOCTYPE html>\n" + "<html>\n" + "<head><title>formulario de saludo</title></head>\n" + "<body>\n" + "<h1>hola "+request.getparameter("cliente")+"</h1>\n" + "</body></html>"); Las JavaServer Pages (JSP) permiten escribir código HTML e insertar código Java para las partes dinámicas <!DOCTYPE html> <html> <head><title>saludo JSP</title></head> <body> <h1>hola <% if (request.getparameter("cliente")!=null) out.println(request.getparameter("cliente")); %> </h1> </body> </html> Juan Pavón - UCM 2012-13 JSP 3 Servlet generado Se encontrará en el directorio work del servidor tomcat public final class Saludo_jsp extends org.apache.jasper.runtime.httpjspbase //... public void _jspservice(final javax.servlet.http.httpservletrequest request, final javax.servlet.http.httpservletresponse response) throws java.io.ioexception, javax.servlet.servletexception { //... try { response.setcontenttype("text/html"); pagecontext = _jspxfactory.getpagecontext(this, request, response, null, true, 8192, true); _jspx_page_context = pagecontext; application = pagecontext.getservletcontext(); config = pagecontext.getservletconfig(); session = pagecontext.getsession(); out = pagecontext.getout(); _jspx_out = out; out.write("<!doctype html>\r\n"); out.write("<html>\r\n"); out.write("<head>\r\n"); out.write("<title>saludo JSP</title>\r\n"); out.write("</head>\r\n"); out.write("<body>\r\n"); out.write("<h1>hola\r\n"); //... Juan Pavón - UCM 2012-13 JSP 4

JSP El texto HTML se denomina plantilla Los ficheros JSP deben tener la extensión.jsp Se traducen en un servlet, que será compilado automáticamente Se ejecutará el servlet generado El cliente no En eclipse se crean dentro de WebContent Igual que los ficheros.html El código Java se enmarca de varias maneras: <%= expresión %> El resultado de evaluar la expresión se inserta en la página HTML <% código %> Un scriptlet El código se insertará en el método de servicio del servlet <%! declaraciones %> Las declaraciones se insertan en la clase, no en un método <%-- Comentario --%> Comentario JSP Juan Pavón - UCM 2012-13 JSP 5 Objetos predefinidos request Objeto HttpServletRequest que permite acceder a la información de la solicitud response Objeto HttpServletResponse para generar la respuesta session Objeto HttpSession asociado a la petición Si no hubiera sesión será null out Objeto JspWriter (similar a un PrintWriter) para generar la salida para el cliente application El objeto ServletContext del contenedor web Juan Pavón - UCM 2012-13 JSP 6

Expresiones <%= expresión Java %> El resultado de evaluar la expresión será un String que pasará a formar parte de la página HTML Se genera un servlet donde el resultado de la expresión se pone como out.println(expresión) dentro del método _jspservice() <?xml version="1.0" encoding="iso 8859 1"?> <%@ page language="java" contenttype="text/html; charset=iso 8859 1" pageencoding="iso 8859 1"%> <!DOCTYPE html PUBLIC " //W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1 transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http equiv="content Type" content="text/html; charset=iso 8859 1" /> <title>hora</title> </head> <body> <p>hora actual: <%= new java.util.date() %></p> <p>tu IP: <%= request.getremotehost() %></p> </body> </html> Juan Pavón - UCM 2012-13 JSP 7 Scriptles Es la forma de insertar código Java en JSP Entre los símbolos <% y %> Este código se insertará tal cual en el método _jspservice() del servlet generado En el scriptlet, el texto a generar de la página HTML tiene que ponerse con out.print () Normalmente es más práctico usar scriptlets que expresiones Muchas veces hay que comprobar valores, realizar acciones más complejas, etc. Por ejemplo, en vez de la expresión siguiente <p>autor = <%= application.getinitparameter("autor") %></p> Mejor el scriptlet: <% String autor = application.getinitparameter("autor"); if ((autor == null) (autor.trim().equals(""))) autor = "Anónimo"; out.println("autor = "+autor); %> Juan Pavón - UCM 2012-13 JSP 8

Partes condicionales Con scriptles se puede condicionar la ejecución de partes del fichero JSP No obstante este mecanismo puede dar lugar a código poco claro <p> <% String parametro = request.getparameter("nombre"); if ((parametro == null) (parametro.trim().equals(""))) { %> No nos has dado tu nombre. <% else { %> Bienvenido, <% out.println(parametro); %> </p> Juan Pavón - UCM 2012-13 JSP 9 Declaraciones Se pueden incluir declaraciones en la clase del servlet generado con <%! declaración %> Este código se inserta fuera de los métodos de la clase, como nuevas declaraciones en la clase Variables del servlet <%! private int edad; %> Si se declaran variables con <%... %> serán locales al scriptlet Métodos Es mejor declararlo en una clase Java aparte <%! private int contador = 0; %> <p>número de veces que se ha visitado esta página desde que se arrancó el servidor: <%= ++contador %> </p> Juan Pavón - UCM 2012-13 JSP 10

Directivas Se aplican a la clase servlet generada Sintaxis: <%@ directiva atributo="valor" %> o bien: <%@ directiva atributo1="valor1" atributo2="valor2"... atributon="valorn" %> Directivas comunes include permite incluir otro fichero que se tratará como JSP Puede tratarse de un fichero JSP, HTML, JavaScript, etc. El fichero se referencia con una URL relativa a la página JSP o al servidor si va precedido de / <%@ include file="/url" %> page permite importar un paquete <%@ page import="java.util.*" %> Juan Pavón - UCM 2012-13 JSP 11 Uso de Java Beans con JSP Los Java Beans son componentes Java que se usan habitualmente en aplicaciones Web para gestionar la lógica de negocio Se pueden utilizar en JSP para obtener información a visualizar Más adelante se verá la arquitectura MVC donde JSP implementa la vista Juan Pavón - UCM 2012-13 JSP 12

Java Beans Clases Java que cumplen varias convenciones Declarados dentro de un paquete Constructor sin argumentos O que no se defina ningún constructor Todos los atributos son private Estos atributos se denominan propiedades Métodos de acceso a las propiedades getpropiedad() para lectura Para los booleanos ispropiedad() setpropiedad(valor) para escritura Métodos para realizar funciones más complejas En Eclipse se crean con facilidad Crear una clase Java (dentro de un paquete) Para aplicaciones web, dentro del src/paquete Especificar las propiedades como atributos private Source Generate getters and setters Se crean los métodos get y set que interesen Juan Pavón - UCM 2012-13 Enterprise Beans 13 Java Beans Ejemplo de un Bean cliente public class Cliente { private String nombre; private String nif; private String email; private String direccion; private String telefono; public String gettelefono() { return telefono; public void settelefono(string telefono) { this.telefono = telefono; public String getnombre() { return nombre; public void setnombre(string nombre) { this.nombre = nombre; public String getdireccion() { return direccion; public void setdireccion(string direccion) { this.direccion = direccion; public String getnif() { return nif; public String getemail() { return email; Juan Pavón - UCM 2012-13 Enterprise Beans 14

JSP y Java Beans JSP proporciona varias etiquetas para usar Java Beans jsp:usebean Crea un Java Bean <jsp:usebean id="nombrebean" class="paquete.clase" /> Equivale a <% paquete.clase nombrebean = new paquete.clase(); %> jsp:setproperty Modifica una propiedad llamando al método setpropiedad() <jsp:setproperty name="nombrebean" property="propiedad" value="valor" /> Equivale a <% nombrebean.setpropiedad("valor"); %> jsp:getproperty Obtiene el valor de una propiedad llamando a getpropiedad() <jsp:getproperty name="nombrebean" property="propiedad" /> Equivale a <%= nombrebean.getpropiedad() %> Juan Pavón - UCM 2012-13 Enterprise Beans 15 Versión XML de JSP Si se quiere utilizar JSP con aplicaciones XML habrá que adaptar la sintaxis a XML XHTML Servicios Web Aplicaciones Ajax Correspondencia en XML: HTML: <%= expression %> XML: <jsp:expression>expresión</jsp:expression> HTML: <% code %> XML: <jsp:scriptlet>código</jsp:scriptlet> HTML: <%! declarations %> XML: <jsp:declaration>declaraciones</jsp:declaration> HTML: <%@ include file=url %> XML: <jsp:directive.include file="url"/> Juan Pavón - UCM 2012-13 JSP 16

Versión XML de JSP <?xml version="1.0" encoding="utf 8"?> <html xmlns:jsp="http://java.sun.com/jsp/page"> <jsp:output omit xml declaration="true" doctype root element="html" doctype public=" //W3C//DTD XHTML 1.0 Transitional//EN" doctype system="http://www.w3.org/tr/xhtml1/dtd/xhtml1 transitional.dtd" /> <jsp:directive.page contenttype="text/html"/> <head> <title>título de la página</title> </head> <body> Cuerpo con scriptles, etc. </body> </html> Espacio de nombre para las etiquetas jsp:xxx Declaración del tipo de documento Juan Pavón - UCM 2012-13 JSP 17 Acciones Etiquetas JSP con sintaxis XML para controlar el intérprete de servlets <jsp:include page="url" flush="true" /> Incluye el URL indicado en tiempo de ejecución en vez de en tiempo de compilación (que es lo que hace la directiva include) Esto sirve para datos que cambian con frecuencia <jsp:forward page="url" /> <jsp:forward page="<%= expresiónjava %>" /> Salta al URL (estático) o al URL resultante de la expresión Java (calculado dinámicamente) Juan Pavón - UCM 2012-13 JSP 18

Ventajas de JSP PHP, ASP, ColdFusion Al tener acceso a todo Java, JSP es más flexible y mejor lenguaje para la parte dinámica Más herramientas de desarrollo (muchas de código abierto) Servlets Mejor para crear y mantener el código (X)HTML Se puede editar en herramientas típicas de desarrollo web Aunque antes sigue siendo necesario conocer cómo programar servlets Juan Pavón - UCM 2012-13 JSP 19 Bibliografía Eric Jendrock et al. The Java EE 6 Tutorial (2013). http://docs.oracle.com/javaee/6/tutorial/doc/ Building Web Apps in Java: Beginning & Intermediate Servlet & JSP Tutorials. http://courses.coreservlets.com/course-materials/csajsp2.html Documentación oficial Java EE Specifications http://www.oracle.com/technetwork/java/javaee/tech/index.html API specification for version 6 of Java EE http://docs.oracle.com/javaee/6/api/ Juan Pavón - UCM 2012-13 JSP 20