curso j2ee
Post on 25-Dec-2015
46 Views
Preview:
DESCRIPTION
TRANSCRIPT
Taller J2EE
Java Enterprise Edition
M.C.E. Beatriz A. Olivares Zepahua
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
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
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)
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
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
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)
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
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
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
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
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)
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“ ….
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.
7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua
Servlet
Qué es Ciclo de vida Esquema de clases Ejemplo Ejercicio
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
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()
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
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á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>
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"; }
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(); }}
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)
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
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
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
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
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
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
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”
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
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)
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
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();
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
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
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
7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua
JSP
Qué es Cuándo usarlo Sintaxis Ejemplo Ejercicio Sesiones
Ejemplo Ejercicio
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)
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
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>
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}"
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
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
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>
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!
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
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
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()
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
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");}
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ágina sólo sirve para mostrar el cambio de color <a href="otra.jsp">ir a otra página</a> </body></html>
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
7-9 de noviembre 2007M.C.E. Beatriz A. Olivares Zepahua
JB
Qué es Cómo usarlo Sintaxis Ejemplo Ejercicio
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
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
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}
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}
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
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
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; }
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}"/>
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>
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
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)
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
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
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);}
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; }}
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
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
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.
top related