curso j2ee

71
Taller J2EE Java Enterprise Edition M.C.E. Beatriz A. Olivares Zepahua

Upload: quique-marts-tellez

Post on 25-Dec-2015

40 views

Category:

Documents


6 download

DESCRIPTION

curso para aplicaciones web utilizando la tecnologia J2EE

TRANSCRIPT

Page 1: Curso J2EE

Taller J2EE

Java Enterprise Edition

M.C.E. Beatriz A. Olivares Zepahua

Page 2: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Contenido

Introducción Aplicaciones Web Servlets JSPs JBs Otras tecnologías: JSF, Ajax, Servicios Web Referencias

Page 3: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Objetivo del Curso

El participante aprenderá a utilizar y programar aplicaciones empresariales que requieran montarse en un servidor de aplicaciones

Page 4: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Requerimientos Conocimientos previos

Programación en Java Terminología Web Terminología de bases de datos relacionales

Hardware mínimo Pentium III a 800 MHz o equivalente 512 MB en RAM 90 MB para JEE 5.02 y 125 MB libres en disco para NetBeans 5.5.1

Software J2SE JDK 5.0 JEE 5.02 NetBeans 5.5 Sun Java System Application Server Platform Edition 9.0 Update 1

Patch 1 Derby Database (incluída en Netbeans 5.5)

Page 5: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Servidor de Aplicaciones

Tecnología básica que proporciona la infraestructura y los servicios claves a las aplicaciones alojadas en un sistema (MS) Agrupación de recursos (conexiones a bd p. ej.) Administración de transacciones Detección y control de errores Seguridad

Casi siempre se asocia a la tecnología J2EE

Page 6: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Aplicación Empresarial

Sistema que sirve a múltiples sitios o divisiones de una compañía y abarca todas las áreas del negocio.

Son confiables y seguras, lo que aumenta su complejidad

Por su naturaleza son aplicaciones multicapas

Page 7: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Aplicación Multicapas

Divide la funcionalidad, capacidades y complejidad en áreas con un foco específico.

Una separación muy común corresponde al patrón de diseño MVC (Modelo – Vista – Controlador)

Page 8: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Multicapas con J2EE / JEE

Cliente Web Cliente stand-alone

Servlets JSP JB JSF JSTL

EJB JAX-WS Entidades JPA

JDBC JCA JPA JTA

Capa Cliente

Capa Web

Capa de Negocio

Capa de Datos

J2EE JEE

Page 9: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

¿J2EE o JEE?

J2EE Conjunto de especificaciones y prácticas que

permiten generar soluciones para desarrollar, distribuir y administrar aplicaciones multicapas centralizadas en servidores.

JEE Estándar de la industria para desarrollar

aplicaciones Java portables, robustas, escalables y seguras del lado del servidor. Evolución de J2EE

Page 10: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Aplicaciones Web

Evolución de las aplicaciones Web Ciclo solicitud – respuesta (request –

response) Ciclo solicitud – respuesta en JEE Elementos

Servlet JSP JB / EJB

Page 11: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Evolución de Aplicaciones Web

Página Web Archivo en HTML con información fija

Sitio Web Conjunto de páginas Web que mantienen consistencia de

información y estilo (look and feel) Aplicación Web

La información se muestra en las páginas dependiendo del usuario firmado y sus permisos

Portal Web Entrada a aplicaciones o sitios relacionados con la

comunidad u organización que controla el portal

Page 12: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Estructura de una aplicación Web JEE Directorio document_root

Generalmente tiene el nombre de la aplicación Contiene los recursos estáticos, páginas estáticas y dinámicas,

clases del lado del cliente (applets) WEB_INF

Subdirectorio que contiene el descriptor de despliegue (web.xml) Archivos descriptores de bibliotecas de etiquetas tags

Subdirectorio que contiene las clases que implementan las bibliotecas de etiquetas

lib Subdirectorio que contiene los archivos JAR de librerías usadas en el

código del lado del servidor classes

Subdirectorio opcional donde se encuentran las clases a usar del lado del servidor (beans, clases auxiliares)

Page 13: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ciclo solicitud - respuesta

Cliente WEB

http://www.google.com

<html><head><meta http-equiv="content-type“ ….

Page 14: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Solicitud-Respuesta en JEE

Cliente

Servidor Web

HttpServletRequest

HttpServletResponse

ComponentesWeb

ComponentesJavaBeans

HTTP Request

HTTP Response

Fuente: The Java™ EE 5 Tutorial.

Page 15: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Servlet

Qué es Ciclo de vida Esquema de clases Ejemplo Ejercicio

Page 16: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

¿Qué es un servlet?

Es un programa que corre en el servidor Web, su función es generar contenido dinámico para un navegador Web

Deriva de applet, implica que corre en el servidor.

Requiere un contenedor o un servidor de aplicaciones compatible con J2EE

Page 17: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ciclo de vida de un servlet

Contenedor Servlet

Carga a memoria

init(config)

service(request, response)

destroy()

Page 18: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo

Servlet para escribir el clásico Hola Mundo indicando la fecha actual y el nombre de quien está entrando a la aplicación

Requerimos como mínimo Página Web con formulario que tenga campo de captura y

botón de submit; el formulario debe dirigirse hacia el servlet.

Servlet que escriba Bienvenido xHoy es fecha Donde x es el nombre llenado en el formulario y fecha es

la fecha-hora actual

Page 19: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

index.html<html> <head> <title>Ejemplos del Taller J2EE</title> </head> <body> <h1>P&aacute;gina Principal</h1> <form method="post" action="hola"> Por favor, indique su nombre <input type="text" name="txtNombre" maxlength="20" size="20"> <br> <input type="submit" value="Enviar"> </form> </body></html>

Page 20: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

hola.javapackage servlet;

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.Date;

public class hola extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); }

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); }

public String getServletInfo() { return "Servlet de ejemplo inicial"; }

Page 21: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

hola.java (cont.) protected void processRequest(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet hola</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Bienvenido " + request.getParameter("txtNombre") + "</h1>"); out.println("<br><br> Hoy es "+ new java.util.Date()); out.println("</body>"); out.println("</html>"); out.close(); }}

Page 22: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Para ejecutar el ejemplo

Abrir NetBeans Abrir el proyecto ejemploServletSimple Ejecutar la aplicación (F6)

Page 23: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejercicio

Capturar el nombre del usuario y la materia que más le gusta (lista de 3 opciones)

En la segunda ventana (servlet) darle la bienvenida e indicar qué materia fue la seleccionada

Requerimos Crear aplicación Crear página inicial (html) Crear servlet

Page 24: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejercicio (cont.) Para crear la aplicación

Entrar a NetBeans Elegir crear aplicación Web Indicar nombre y directorio, así como el tipo de estructura

(Jakarta) Eliminar la página default

Page 25: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejercicio (cont.)

Para crear la página de inicio Crear la página de entrada (New File, HTML) Asignarle nombre (index) Cambiar la configuración de la aplicación Codificar la página de inicio

Page 26: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejercicio (cont.)

Para crear el servlet Crear la clase de servlet Asignarle nombre (selección) y paquete (servlet) Asegurar que se agrega el servlet a la configuración Codificar el servlet

Page 27: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Servlet + Base de Datos El contenido dinámico de las páginas generalmente viene

asociado a información almacenada en una base de datos Para acceder a la información vamos a hacer uso de dos tipos

distintos de clases AccesoDatos.java

Encapsula el conocimiento de acceso a una base de datos (cadena de conexión, driver de conexión, etc.)

EntidadDBAO.java Donde “Entidad” representa el nombre de la tabla de base de datos a

usar y DBAO es el acrónimo de Data Base Access Object Tiene atributos privados y métodos para buscar, agregar, eliminar o

actualizar información en la base. Para efectos de estos ejemplos, sólo utilizaremos métodos de

búsqueda Todas esas clases serán colocadas en el paquete

edu.tallerj2ee.datos

Page 28: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Gestor de Base de Datos DERBY

DERBY es un gestor de base de datos open-source

Está incluido en la instalación de NetBeans 5.5.1 si ésta se elige “Con herramientas”

El servicio de base de datos se inicia y detiene dentro del propio NetBeans

Page 29: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Base de datos Libros

Representa la información de un inventario de libros (ISBN, título, autor, precio) que pueden ser consultados o modificados por usuarios (clave, contraseña, nombre y tipo, 1=administrador, 2=usuario normal)

El usuario de la base es “libro” y su contraseña es “libros1”

Page 30: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Creación de la base de datos Libros

Dentro de NetBeans Seleccionar Runtime (Tiempo de Ejecución) Seleccionar menú superior Tools -> Java DB Database ->

Create Java DB Database

Page 31: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Creación de la base de datos Libros (cont.) Indicar nombre de la base, nombre y contraseña de usuario (libros, libro,

libro1) Una vez creada, del lado izquierdo, sección Databases, sobre el nombre de

la base, botón derecho CONNECT Nuevamente botón derecho, EXECUTE COMMAND Abrir Archivo e indicar el script (TallerJ2EECongreso\scriptBD\ejLibros.sql)

Page 32: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo Servlet + Base de Datos

Permitir sólo la entrada a usuarios registrados

Pedir clave y contraseña Si el usuario existe, mostrar el mensaje

“Bienvenido, nombre_usuario” donde nombre_usuario será obtenido de la base de datos

Si no existe, mostrar error y permitir volver a indicar la clave y contraseña

Page 33: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo Servlet + Base de Datos (cont.) En srvLogin.java, processRequest

UsuarioDBAO oUsr = new UsuarioDBAO();

if (request.getParameter("txtCve") == null || request.getParameter("txtPwd") == null)

response.sendRedirect("error.html");else{

oUsr.setClave((new Integer(request.getParameter("txtCve"))).intValue());

oUsr.setContrasenia(request.getParameter("txtPwd")); try{ if (oUsr.buscar()){ response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter();

Page 34: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo Servlet + Base de Datos (cont.)

out.println("<html>"); out.println("<head>"); out.println("<title>Servlet Uso BD</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Bienvenido " + oUsr.getNombre() + "</h1>"); out.println("</body>"); out.println("</html>"); out.close(); }//buscar else{ response.sendRedirect("error.html"); } } catch (Exception e){ throw new ServletException(e.getMessage()); } } //else datos

Page 35: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo Servlet + Base de Datos (cont.)

Abrir el proyecto TallerJ2EECongreso\Ejemplos\ejemploServletBD

Ejecutar el proyecto Usuarios existentes

Clave = 1, contraseña = abc123 Clave = 2, contraseña = abc124 Clave = 3, contraseña = abc125

Page 36: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejercicio

Completar el ejemplo para que, una vez firmado el usuario, pueda consultar los datos de un libro buscándolo por su ISBN

Requerimos Pintar el formulario para colocar tanto el campo

como el botón desde el servlet, dirigiéndolo hacia un segundo servlet

El segundo servlet (srvConsultaLibro por ejemplo) deberá validar los parámetros, crear un objeto LibroDBAO, buscarlo y presentar los resultados

Page 37: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

JSP

Qué es Cuándo usarlo Sintaxis Ejemplo Ejercicio Sesiones

Ejemplo Ejercicio

Page 38: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

¿Qué es JSP?

Acrónimo de Java Server Pages Extensión de la tecnología de Servlets JSP combina HTML, XML y Java, arrojando

HTML como resultado final (aunque el servidor lo convierte a servlet y lo compila como tal); es una orientación híbrida (mezcla de diseño gráfico y programación en lenguaje de alto nivel)

Page 39: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

¿Cuándo usarlo?

Si genera lo mismo que un servlet, ¿qué sentido tiene usarlo? Mantiene (en algún grado) el diseño gráfico, lo que hace

más fácil el mantenimiento de la aplicación Ya que el servlet es una clase normal y podemos pasar a

producción sólo la parte compilada, una forma de combinar el manejo de ambos tipos es: Usar JSP para lo que implica presentación de información Usar servlet para las afectaciones a la base de datos y

validaciones que no requieran visualizar datos, como el login por ejemplo

Page 40: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Sintaxis Directivas

Indican propiedades de la página <%@ page language="java"%> <%@ page import=“edu.aplic.datos.Usuario"%> <%@ page import=“java.io.*"%>

Incluyen archivos <jsp:include page = "arriba.jsp" flush="true"/>

Scriptlets Incluye un fragmento de código Java dentro del JSP

<%-- Comentario --%> <%! String sValor = new String();%> <% java.util.Date date = new java.util.Date(); %>

Expresiones “Imprimen” el valor indicado mezclado con el HTML

Hola, hoy es <%= date%> <br>

Page 41: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Sintaxis (cont.) Directivas de librerías de etiquetas

Importan las librerías de etiquetas <%@ taglib uri="/functions" prefix="f" %>

Custom tags Importan librerías de etiquetas predeterminadas, que sirven para

asignar variables, iterar sobre colecciones y condicionar la aparición de código HTML <%@ taglib uri=http://java.sun.com/jsp/jstl/core prefix="c" %> <c:forEach var="localeString" items="${locales.localeNames}">

Expresiones en lenguaje de expresiones Obtienen información de las propiedades de un objeto, se usan

en conjunto con JavaBeans o funciones value="${param.txtCve}"

Page 42: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Objetos ImplícitosObjeto Uso Clase Base

request Representa el Objeto de Solicitud dentro de un

JSP/Servlet.HttpServletRequest

response Representa el Objeto de Respuesta dentro de un

JSP/Servlet.HttpServletResponse

pageContext Representa el Contexto del JSP/Servlet. PageContext

session Representa la sesión del Usuario en un JSP/Servlet. HttpSession

application Representa el Objeto de aplicación (Contexto) para

un JSP/Servlet.ServletContext

out Representa el Objeto de Escritura (Para enviar a

pantalla) en un JSP/Servlet.JspWriter

config Representa el Objeto de Configuración para un

JSP/Servlet.ServletConfig

page Representa el Objeto del JSP/Servlet en sí. Object

exception Representa el Objeto de errores para un JSP/Servlet. Throwable

Page 43: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo

JSP para escribir el clásico Hola Mundo indicando la fecha actual y el nombre de quien está entrando a la aplicación

Requerimos como mínimo Página Web con formulario que tenga campo de

captura y botón de submit; el formulario debe dirigirse hacia el JSP.

JSP que escriba Bienvenido xHoy es fecha

Page 44: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

hola.jsp<%@paga language=“java”%><%@page contentType="text/html"%><%@page pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hola</title> </head> <body> <h1>Bienvenido <%=request.getParameter("txtNombre")%></h1> <br>Hoy es <%=new java.util.Date()%> </body></html>

Page 45: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Para ejecutar el ejemplo

Abrir NetBeans Abrir el proyecto ejercicioJSP Ejecutar la aplicación (F6) Se visualiza lo mismo que el ejercicio de

servlets … ¡pero se escribe más fácil!

Page 46: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejercicio

Capturar el nombre del usuario y la materia que más le gusta (lista de 3 opciones), puede ser html o jsp (es el default al crear la aplicación)

En la segunda ventana (jsp) darle la bienvenida e indicar qué materia fue la seleccionada

Requerimos Crear aplicación Crear página inicial Crear jsp donde se muestre la información

Page 47: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Sesiones

El protocolo HTTP no tiene estado, es decir, cada ciclo petición-respuesta (request-response) es independiente de otros

En las aplicaciones, es necesario dar seguimiento a las acciones del usuario desde que accede (firma, login) hasta que termina (desconexión, logout)

Sesión de usuario Tiempo que un usuario (identificado por la IP desde la que

se conecta) está dentro de un sitio Web. Tiempo que un usuario está dentro de una aplicación

Web en particular

Page 48: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Manejo de Sesiones

Se usa el objeto session, que en el caso de los JSP, está creado por omisión

En el objeto se guarda una colección de atributos definidos por la propia aplicación web

Métodos session.setAttribute(String nombre, Object valor) Object x = session.getAttribute(String nombre) session.removeAttribute(String nombre) session.invalidate()

Page 49: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo Al iniciar la aplicación, preguntar al usuario su clave,

su contraseña y el color que prefiere para personalizar las páginas

Pasar a la página opciones.jsp que se visualiza en el color elegido por el usuario y que permite navegar hacia otras páginas

Todas las páginas se visualizarán con el color elegido y permitirán salir de la aplicación

Requerimos Página de inicio y servlet de login, aumentando ahí la

creación del atributo de sesión Dirigir hacia un jsp que lea el atributo de sesión para

cambiar el color de la página

Page 50: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

srvLogin modificado Dentro de processRequestif (oUsr.buscar()){ HttpSession session = request.getSession(true); session.setAttribute("sColor",

(Object)request.getParameter("cmbColor")); response.sendRedirect("principal.jsp");}//buscarelse{ response.sendRedirect("error.html");}

Page 51: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

principal.jsp<%@page contentType="text/html"%><%@page pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body bgcolor="<%=session.getAttribute("sColor")%>">

<h1>Principal</h1> Esta p&aacute;gina s&oacute;lo sirve para mostrar el cambio de color <a href="otra.jsp">ir a otra p&aacute;gina</a> </body></html>

Page 52: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejercicio

Una vez firmado el usuario en la aplicación, presentar su nombre en la parte superior izquierda de todas las páginas.

Requerimos: Modificar el servlet de login para considerar una

variable de sesión diferente Modificar las páginas JSP para mostrar la nueva

información

Page 53: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

JB

Qué es Cómo usarlo Sintaxis Ejemplo Ejercicio

Page 54: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

JB

Acrónimo de Java Bean Clases que pueden ser fácilmente

reutilizables y cuya función principal es encapsular los datos que se muestran en una página dinámica

Prácticamente cualquier clase de Java puede convertirse en un Java Bean siempre que cumpla con ciertas restricciones de diseño

Page 55: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Cómo usar un JB

Para incluirlo en un JSP <jsp:useBean id=“nombreJB“

class="fully_qualified_classname" scope="scope"/>

<jsp:useBean id=“nombreJB“ class="fully_qualified_classname" scope="scope">

<jsp:setProperty .../>

</jsp:useBean> Donde scope puede ser

Application, session, request, page

Page 56: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Para trabajar con las propiedades del JB

Para asignar <jsp:setProperty name=“nombreJB"

property=“nombre_prop_con_minúscula" value=“valor"/>

Valor puede ser: Una constante Una expresión

Información del request que se describe como ${param.nombre_campo_formulario}

Page 57: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Para trabajar con las propiedades del JB (cont.)

Para obtener <jsp:getProperty name=“nombreJB"

property=“nombre_prop_con_minúscula" /> O bien $

{nombreJB.nombre_prop_con_minúscula} La propiedad bien puede haber sido un método

que regresa un objeto, luego podemos pedir atributos de ese objeto ${nombreJB. nombre_prop_con_minúscula.atributo}

Page 58: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo

Para realizar el equivalente al login usando JB UsuarioJB va a ser la clase para el Java Bean, su

función será mostrar los atributos y métodos posibles de UsuarioDBAO

En el jsp, será necesario validar la llegada de los parámetros, asignar la información de éstos a los atributos del JB y, si existe, presentar su nombre, en caso contrario marcar error

Page 59: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Clase UsuarioJBpackage edu.tallerj2ee.jb;

import java.lang.String;import java.util.Vector;import edu.tallerj2ee.datos.UsuarioDBAO;

public class UsuarioJB {private int nClave;private String Nombre;private String Contrasenia;private int Tipo;private UsuarioDBAO oUsr= new UsuarioDBAO();

public UsuarioJB(){this.nClave = 0;this.Nombre = new String("");this.Contrasenia = new String("");

this.Tipo = 0;}

// métodos set y get para Clave, Nombre, Contraseña y Tipo como en el caso de UsuarioDBAO

Page 60: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Clase UsuarioJB public UsuarioJB getUsuarioPorClaveContrasenia() throws Exception{ if (this.nClave!=0 && this.Contrasenia!=""){ this.oUsr.setClave(this.nClave); this.oUsr.setContrasenia(this.Contrasenia); if (this.oUsr.buscarPorClave()){ this.nClave = oUsr.getClave(); this.Contrasenia = oUsr.getContrasenia(); this.Nombre = oUsr.getNombre(); this.Tipo = oUsr.getTipo();

return this; } else return null; } else

return null; }

Page 61: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

login.jsp<%@ page language="java"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><c:set var="cve" value="${param.txtCve}"/><c:set var="pwd" value="${param.txtPwd}"/><html>

<head><title>Uso de JB</title></head><body>

<c:choose> <c:when test="${cve!='' && pwd!=''}"> <jsp:useBean id="jbUsuario" class="edu.tallerj2ee.jb.UsuarioJB" scope="page">

<jsp:setProperty name="jbUsuario" property="clave" value="${cve}"/> <jsp:setProperty name="jbUsuario" property="contrasenia" value="$

{pwd}"/> <c:set var="sNomUsu"

value="${jbUsuario.usuarioPorClaveContrasenia.nombre}"/>

Page 62: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

login.jsp <c:choose>

<c:when test="${sNomUsu!=''}"> <h1>Bienvenido ${sNomUsu}</h1> </c:when> <c:otherwise> Error, no existe, intente <a href="index.jsp">otra vez</a> </c:otherwise> </c:choose> </jsp:useBean> </c:when> <c:otherwise> Error, faltaron datos, intente <a href="index.jsp">otra vez</a> </c:otherwise></c:choose>

</body></html>

Page 63: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejercicio

Una vez firmado el usuario (login), puede buscar la información de un libro por ISBN

Requerimos Al login.jsp, agregarle la captura del ISBN y

dirigirlo a consultaLibroConJB.jsp Crear JB para libro Crear consultaLibroConJB.jsp para que use el JB

nuevo

Page 64: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

EJB

Enterprise Java Bean Van a aislar la lógica de negocio de los

problemas generales de una aplicación distribuida (seguridad, transacciones, persistencia, concurrencia, etc.)

Se trata de componentes (una o más clases que se unen para realizar una tarea)

Page 65: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Tipos de EJB De entidad

Representan los datos de la aplicación; la persistencia puede estar dada por el contenedor mediante un mapeo específico entre la clase y la base o por el bean, en cuyo caso el programador debe implementar los mecanismos necesarios

De sesión Administran el flujo de información entre el cliente y el servidor,

sirven como un intermediario entre el cliente y otros componentes dentro del servidor Con estado: no persistente pero asegura que se trata de un cliente

por bean, mientras se mantiene la sesión se mantiene también su información

Sin estado: no es persistente y tampoco mantiene la información, de modo que puede ser usado concurrentemente por varios clientes

Dirigidos por mensajes Usados para comunicación asíncrona

Page 66: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Elementos de un EJB Business Inteface

Define los métodos que provee el EJB, se nombra como el concepto de negocio que representa (Inventario)

Clase EJB Implementa los métodos definidos en la interfaz, se nombra

como ConceptoBean (InventarioBean) Clases auxiliares

Cualquier clase necesaria para la implementación de la CLASE EJB, por ejemplo definición de excepciones, utilerías, etc.

Todos los archivos se empaquetan en un EJB.jar que además contiene ejb-jar.xml sun-ejb-jar.xml

Page 67: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo MUY simple Interfacepackage edu.tallerj2ee.ejbs;

import javax.ejb.Remote;

/** * This is the business interface for HolaMundo enterprise bean. */@Remotepublic interface HolaMundoRemote { public String saludar(String nombre);}

Page 68: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Ejemplo MUY simple Clase EJBpackage edu.tallerj2ee.ejbs;

import javax.ejb.Stateless;

@Statelesspublic class HolaMundoBean implements edu.tallerj2ee.ejbs.HolaMundoRemote { public HolaMundoBean() { } public String saludar(String nombre){ return "Hola " + nombre; }}

Page 69: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Otras tecnologías

JSF Java Server Faces Marco de trabajo basado en un modelo de componentes

para simplificar el desarrollo de interfaz de usuario Compite con MS .NET 2.0 Web Developer, ya que es

posible tanto identificar componentes especiales como separar el manejo de la parte visual de sus reglas de procesamiento

También compite con Struts, otro marco de trabajo, pero Struts no tiene un modelo de componentes equivalente

Page 70: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Otras tecnologías

Servicios Web JAX-WS es el API para desarrollar servicios Web

y sus clientes Permite crear clases a partir de un archivo de

definición (WSDL) Oculta la complejidad de los estándares que soportan

los servicios web AXIS

Es un API del Proyecto Jakarta que proporciona una funcionalidad semejante a JAX-WS

Page 71: Curso J2EE

7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua

Referencias Deitel, Deitel, Nieto. (2002). Internet & WWW How to Program.

Prentice Hall Jendrock, E. et al. (2007). Sun Microsystems. The Java™ EE 5

Tutorial For Sun Java System Application Server 9.1. Disponible en: http://java.sun.com/javaee/5/docs/tutorial/doc/

Hunter, J. Crawford W. (1998). Java Servlet Programming. O’Reilly Online Catalog. Disponible en: http://www.oreilly.com/catalog/jservlet/chapter/ch03.html

Pursnani, V. Introducción a la Programación de Java Servlets. Disponible en: http://www.acm.org/crossroads/espanol/xrds8-2/servletsProgramming.html

Shklar, L. Rosen, S. (2003). Web Application Architecture Principles, Protocols and Practices. John Wiley & Sons, Ltd.