10 jsp-jsf

97
Informática III Ing. Wilson Rojas Reales Esp. Seguridad de la Información Universidad de los Andes Correo: [email protected] Cel: 310 584 1388 / 316 274 7117

Upload: jccamacho4748

Post on 25-Nov-2015

111 views

Category:

Documents


4 download

TRANSCRIPT

  • Informtica III

    Ing. Wilson Rojas RealesEsp. Seguridad de la Informacin

    Universidad de los AndesCorreo: [email protected]: 310 584 1388 / 316 274 7117

  • Ing. Wilson Rojas Reales

    Las pginas JSP estn compuestas de cdigo HTML / XML

    mezclado con etiquetas especiales y fragmentos de cdigo

    escritos en Java.

    Una pgina JSP puede ser escrita en un editor de texto, lo cual

    quiere decir que podemos incluir lgica de negocio (no

    recomendable) en la misma pgina.

    El motor de las pginas JSP, est basado en los servlets de Java. El

    cdigo se almacena en un archivo con extensin jsp que incluye

    dentro de la estructura de etiquetas HTML, las sentencias Java a

    ejecutar.

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

    Para qu escribir Servlets si podemos elaborar pginas JSPs ???

    El motivo de crear servlets es utilizarlos como controlador, esa es

    la funcin principal de un servlets.

    Cuando una pgina JSP es invocada, el servidor la traduce en un

    Servlet, el resultado es un archivo con extensin java que ser

    compilado en su correspondiente .class

    Objetos implcitos: pageContext, request, response, application,

    config, session, out, page, exception

  • Ing. Wilson Rojas Reales

    Directives: are instructions to the JSP container that describe

    what code should be generated. They have the general form:

    The specification describes three standard directives available in

    all compliant JSP environments:

    page

    include

    taglibg

  • Ing. Wilson Rojas Reales

    The attributes are any of those listed:

    language

    import

    session

    isErrorPage

    errorPage

    And more

  • Ing. Wilson Rojas Reales

    Merges the contents of another file at translation time into the

    .jsp source input stream, much like a #include C preprocessor

    directive. The syntax is:

    Examples:

  • Ing. Wilson Rojas Reales

    JSP provides a simple means for accessing the value of a Java

    variable or other expression and merging that value with the

    HTML in the page. The Syntax is:

    where exp is any valid java expression.

    Example:

    The current time is:

  • Ing. Wilson Rojas Reales

    Is a set of one or more Java language statements intended to be

    used to process an HTTP request. The syntax is:

  • Ing. Wilson Rojas Reales

    Like scriptlets, declarations contain Java language statements,

    the syntax is:

    Declaration sections can be used to declare class or instance

    variables, methods, or inner classes.

  • Ing. Wilson Rojas Reales

    Ejemplo 01: para ejecutar el archivo basta con acceder

    desde el navegador a la pgina. Este ejemplo,

    simplemente muestra un formulario que solicita login y

    password. E Incluye la pgina jsp: fecha.jsp. Usted deber

    acceder a la pgina de la siguiente forma:

    http://localhost:8080/jsp/ejemplo01/Ejemplo.jsp

    Sera un grave error acceder a la pgina Ejemplo.jsp sin la

    existencia de la pgina fecha.jsp (para este primer

    ejemplo, puesto que podemos controlar el acceso a una

    pgina que no exista). Observe que en el formulario se

    hace un llamado (mtodo action) a otra pgina JSP

    llamada:Mostrar.jsp

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

    Las pginas JSP de una aplicacin pueden ser

    configuradas, como los servlets mediante el descriptor del

    despliegue web.xml

    A diferencia de los Servlets, no es obligatorio su uso,

    aunque SI es aconsejable.

    Para ello, es necesario utilizar el elemento ,

    el cual puede aparecer una o varias veces en el archivo

    web.xml

  • Ing. Wilson Rojas Reales

    Toda aplicacin web tiene 4 partes:

    Un directorio pblico Un ficheroWEB-INF/web.xml Un directorioWEB-INF/classes Un directorioWEB-INF/lib

    El rea pblica es la raz de la aplicacin, excepto eldirectorio WEB-INF

    El directorioWEB-INF es un rea privada web.xml es el descriptor de despliegue classes contendr clases java (incluyendo las clases

    compiladas de los servlets) lib contiene cualquier jar necesario para la aplicacin

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

    Un JavaBean es una clase java. La ventaja de utilizar esta clase de

    componentes es que pueden ser insertados fcilmente en cualquier

    pgina JSP, facilitando as la separacin de la lgica de negocio, que

    incluiremos en los componentes, de la capa de presentacin.

    Un JavaBean puede implementar la interfaz Serializable, con un

    constructor sin argumentos y un conjunto de propiedades.

    En la carpeta de ejemplos, encontrar internamente otra carpeta

    denominada beans con un ejemplo que ilustra como crear y utilizar

    un componente JavaBean

    A continuacin se explica el ejemplo.

  • Ing. Wilson Rojas Reales

    En la pgina Saludo.jsp se crea un objeto (bfecha) de su clase

    (beans.BeanFecha) a travs de la etiqueta jsp:useBean

  • Ing. Wilson Rojas Reales

    La clase BeanFecha.java (Parte 1)

  • Ing. Wilson Rojas Reales

    La clase BeanFecha.java (Parte 2)

  • Ing. Wilson Rojas Reales

    La clase BeanFecha.java (Parte Final)

  • Ing. Wilson Rojas Reales

    Una forma (existen otras) sencilla de manipular las excepciones es

    haciendo uso de los atributos isErrorPage y errorPage de la

    directiva page.

    Si deseamos capturar una excepcin para su posterior tratamiento,

    una pgina jsp deber incluir la siguiente lnea:

    La lnea anterior indica al motor JSP que cuando ocurra una

    excepcin que no sea capturada, ejecute la pgina error.jsp

    la pgina error.jsp deber incluir la directiva page as:

  • Ing. Wilson Rojas Reales

  • Ing. Wilson Rojas Reales

    En este ejemplo, se debe tener en cuenta la siguiente configuracin:

    Utilizaremos un archivo de BD de Access.

    Debe crear el DSN

    Este ejercicio, realiza la conexin a un archivo de Access, muestra

    informacin de una tabla.

    Se valida el ingreso del usuario. Si no existe, se regresa a la pgina

    inicial. Si existe se redirecciona a la pgina correspondiente.

    El ejercicio NO est completo al 100%. EL estudiante si as lo desea,

    deber construir las dems pginas JSP. Adems, es un ejemplo

    acadmico para entender el funcionamiento de algunas sentencias.

  • Ing. Wilson Rojas Reales

    El archivo de Access, se denomina hotel.mdb y la tabla utilizada

    para este ejercicio:

  • Ing. Wilson Rojas Reales

    La configuracin ODBC desde el panel de Control de Windows:

  • Ing. Wilson Rojas Reales

    La pgina inicial de acceso al ejercicio y un ingreso exitoso:

  • Ing. Wilson Rojas Reales

  • El siguiente paso en el desarrollo web

  • El objetivo de la tecnologa JSF (Java ServerFaces) es desarrollar aplicaciones WEB deforma parecida a como se construyenaplicaciones locales con Java Swing, AWT, SWTo cualquier otra API similar.

    Los dos componentes principales son:Una librera de etiquetas para JSP

    Una API para manejo de eventos, validadores, etc.

  • Permite a los desarrolladores pensar entrminos de componentes, eventos, backingbeans y otras interacciones, en vez dehablar de peticiones, respuestas y marcas.

    JSF promete reutilizacin, separacin deroles, facilidad de uso de las herramientas.

    JSF tiene una meta especfica: hacer eldesarrollo web ms rpido y fcil.

  • JSF (en J2EE) es similar a ASP .NET: Interfaz de usuario dirigida por eventos,

    Abstraccin del protocolo HTTP

    Controles en ASP .NET

    De servidor

    HTML

    De validacin

    Tienen

    correspondencia

    en JSF

  • Servlets

    Inconvenientes: Poco legible Mantenimiento costoso El diseador grfico debe saber Java A cada cambio: recompilar, empaquetar, desplegar.

    Uso actual de los servlets: Controlador en la arquitectura MVC Preprocesamiento de peticiones

  • Java Server Pages (JSP)Pginas HTML con scripts (por defecto Java)

    Se traduce a un servlet en la primera peticin

    Semnticamente equivalente a los servlets

    Facilitan el desarrollo y mantenimiento

  • JSP 1.xFacilidad para manejo de JavaBeans

  • JSP 1.xOtras etiquetas estndar de JSP

  • JSP 1.xEtiquetas de extensin

    Alternativa a los JavaBeans para encapsular la lgica de negocio

    Componentes para la edicin web

    Para usar declarativamente la lgica de negocio

    Ejemplo:

  • JSP Standard Tag Library (JSTL)Librera de etiquetas para JSP.

    No es parte de JSP ni JSF, los complementa

    Precursor: libreras de etiquetas de Struts

    Formado por 4 libreras:

    corecorecorecore: funciones script bsicas

    xmlxmlxmlxml: procesamiento de xml

    fmtfmtfmtfmt: internacionalizacin y formato

    sqlsqlsqlsql: acceso a base de datos

  • JSTL (Ejemplo con scriptlets, sin JSTL)

    0)) {%>

    N/A

  • JSTL (Ejemplo sin scriptlets, con JSTL)

    N/A

    Etiqueta

    Iterador

    Librera bsica

    Lenguaje de expresiones

  • JSP 2.0Evolucin de JSP 1.2

    Separacin completa de roles

    Todava se habla de cabeceras, sesin,

    Elementos principales:

    Lenguaje de expresiones (EL)

    Ficheros de etiquetas

    SimpleTag vs Tag

    Mejorada la sintaxis XML

  • JSP 2.0Lenguaje de expresiones (EL)

    Mismo EL que JSTL, pero soportado nativamente

    Meta: que lo use gente que no sabe programar

    Inspirado en JavaScript y XPath

    Se puede desactivar los scriptlets y habilitar EL

    ${ }

  • JSP 2.0Ejemplos de EL

    ((Duck) pageContext.getAttribute(duck)).getBeakColor()

    ${duck.beakColor}

    ${foo.bar}

    Con ELSin EL

  • JSP 2.0Archivos de etiquetas

    Escribir etiquetas slo con cdigo JSP

    Mecanismo de reutilizacin para autores de pginas

    Empaquetado de la aplicacin ms flexible

    Etiquetas en /WEB-INF/tags

    TLD implcito

  • JSP 2.0 Ejemplo de archivo de etiqueta.

    Name IQ

    ${i.fullName}${i.IQ}

  • Componentes de interfaz de usuario

    Eventos

    Beans manejados

    Validadores

    Internacionalizacin y localizacin

    Conversores

    Navegacin

  • Los componentes de la interfaz de usuarioSon JavaBeans

    Se ejecutan en el lado del servidor

    Tienen estado

    Se organizan en rboles de vistas

    Representacin especfica: renderer

    Familia de representaciones: kits de renderer

  • Los componentes de la interfaz de usuario

  • Los componentes de la interfaz de usuarioEjemplo (traduccin de JSF a HTML) (1 de 2)

    Enter address:

  • Los componentes de la interfaz de usuarioEjemplo (traduccin de JSF a HTML) (2 de 2)

    Enter address:

    Validation Error: Value is required.

  • EventosLos componentes UI generan eventos

    Los listeners se implementan en backing beans o clases aparte

    4 tipos:

    Value-change events

    Action events

    Data model events

    Phase events

  • EventosEjemplo: value-change event

    public void processValueChanged(ValueChangeEvent event){

    HtmlInputText sender = (HtmlInputText)event.getComponent();

    sender.setReadonly(true);

    changePanel.setRendered(true);

    }

  • EventosEjemplo: action event

  • Beans manejados (Managed beans)Beans de respaldo (Backing beans) JavaBeans especializados

    Contienen datos de componentes UI, implementan mtodos de oyentes de eventos

    Controlador en el Modelo Vista Controlador(MVC) Backing bean por pgina, formulario,

    Componente UI y backing bean estn sincronizadossincronizadossincronizadossincronizados

    Son backing beans que usan la facilidad Manager Bean Creation Facility

  • Beans Manejados (Managed Beans)Ejemplo de declaracin (faces-config.xml):

    helloBean

    com.virtua.jsf.sample.hello.HelloBean

    session

  • Beans Manejados (Managed Beans)Ejemplo de uso:

    Utiliza EL parecido

    al de JSP 2.0

  • Validadores Aseguran la correcta introduccin de valores

    Evitan escribir cdigo Java y/o Javascript

    JSF provee de validadores estndar

    Podemos crear validadores propios

    Generan mensajes de error

    3 tipos: A nivel de componente UI

    Mtodos validadores en los backing beans (validator)

    Clases validadoras (etiqueta propia anidada)

  • Validadores:Estndar de JSF: campo con valor requerido,

    validadores de la longitud de una cadena, y validadores de rango para enteros y decimales

    Ejemplos:

  • Internacionalizacin y localizacin

    Internacionalizacin: habilidad de una aplicacinde soportar diferentes lenguajes dependiendo de laregin del planeta en que nos encontremos.

    Localizacin: El proceso de modificar unaaplicacin para que soporte la lengua de unaregin.

    JSF ofrece el soporte, no las traducciones

    El usuario indica su lengua mediante el navegador

  • Internacionalizacin y localizacinEjemplo (declaracin en faces-config.xml):

    en

    en

    en_US

    es_ES

    CustomMessages

  • ConversoresConvierten el valor de un componente desde y a una

    cadena

    Cada componente se asocia a un slo conversor

    El renderer lo usa para saber mostrar los datos

    JSF tiene definidos para fechas, nmeros, etc.

    Podemos crear los nuestros propios

    Tienen en cuenta la localizacin y formato

  • Conversores

    Muestran un error si la entrada no es correctaPor defecto JSF asigna uno adecuado

    Se pueden definir de 4 formas: Etiqueta propia anidada en la del componente

    En la etiqueta del componente con converter

    Etiqueta anidada

    Etiquetas predefinidas (otras) anidadas

    Conversores no predefinidos

  • ConversoresEjemplo (conversor predefinido):

    18/03/0603/18/06

  • NavegacinHabilidad de pasar de una pgina a la otra

    Lo controla el manejador de navegacin

    Correspondencia salida/pgina: caso de navegacin

    Hay que definir las reglas de navegacin

  • Navegacin Ejemplo de declaracin (faces-config.xml):

    /login.jsp

    success/mainmenu.jsp

    failure/login.jsp

    o

    Pgina

    origen

    Pgina

    destino

    accin

  • JSF con Struts

  • JSF con Spring e Hibernate

  • JSF es una tecnologa de interfaces de usuariocentrada en el MVC, interesante y encreciente auge

    Pretende reducir el salto entre lasaplicaciones de escritorio y las web,abstrayendo del protocolo HTTP

    Promete reutilizacin, separacin de roles,facilidad de uso y reducir el time-to-market

    Se puede combinar con otros frameworkspara obtener un soporte ms potente

  • Java Server Faces In Action, K.D. Mann Ed. Manning. 2005

    Integrating JSP/JSF and XML/XSLThttp://www.theserverside.com/articles/article.tss?l=BestBothWorlds

    JSF KickStart: A Simple JavaServer Faces Applicationhttp://www.programacion.com/java/tutorial/jap_jsfwork/

    Integracin de JSF, Spring e Hibernate para crear una Aplicacin Web del Mundo Realhttp://www.exadel.com/tutorial/jsf/jsftutorial-kickstart.html

    JSP 2.0 and JSTL: Principles and Patternsweb.princeton.edu/sites/isapps/jasig/2002WinterOrlando/presentations/jsp20-jasig-2002.ppt

  • Una aplicacin JSF, se ejecuta en un contenedor deServlets de java.

    Contiene componentes JavaBeans (llamadosobjetos del modelo)

    Pginas principalmente JSPs

    Beans para acceder a las BD

    Una librera de etiquetas personalizadas paradibujar componentes UI en una pgina.

    Una librera de etiquetas personalizadas pararepresentar manejadores de eventos, validadoresy otras acciones.

    Componentes UI representados como objetos.

  • Un primer ejemplo (CarpetaCarpetaCarpetaCarpeta:::: EjemploEjemploEjemploEjemplo01010101), serconstruir un formulario para el ingreso de un login ypassword.

    Al analizar el cdigo, encontraremos etiquetasestndar de HTML: bodybodybodybody,,,, tabletabletabletable,,,, etcetcetcetc

    Algunas etiquetas tienen prefijos: ffff::::viewviewviewview yhhhh::::inputTextinputTextinputTextinputText estas son etiquetas JSF

    Los campos de entrada son conectadas al atributodel objeto.

    Cuando el usuario ingresa el nombre y la contraseaaparecer una pgina de bienvenida. El mensaje deBienvenida, contiene el nombre del usuario.

  • Dos pginas JSP (index.jsp y hola.jsp)

    Un Bean para el manejo de los datos de usuario.

    Archivo de configuracin para la aplicacin quecontiene recursos del Bean y las reglas denavegacin. Este archivo se llama facesfacesfacesfaces----configconfigconfigconfig....xmlxmlxmlxml

    Los archivos necesarios para el servlet: el archivowebwebwebweb....xmlxmlxmlxml y el archivo indexindexindexindex....htmlhtmlhtmlhtml que redireccionan alusuario a la direccin correcta para la pgina deentrada al sistema.

  • Ing. Wilson Rojas Reales

    Recomendacin: Utilizar un IDE como Eclipse. Se debe crear un

    proyecto Web Dinmico.

    Es importante tener en cuenta los parmetros de configuracin:

  • Ing. Wilson Rojas Reales

    Permite separar la lgica de control, la lgica de negocio y la

    lgica de presentacin.

    En el ejemplo estudiado, el modelo se ve reflejado en el archivo

    UsuarioBean.java, es la clase que contiene todos los elementos

    necesarios para manejar los datos de la aplicacin.

    El modelo se le comunica al Sistema JSF por medio del archivo

    faces-config.xml, exactamente donde se detalla la parte

    managed-bean. Observe que hay un bean denominado usuario

    que est mapeado con la clase UsuarioBean.java y con un

    mbito de sesin.

  • Ing. Wilson Rojas Reales

    La vista se trabaja mediante pginas JSF; es decir, mediante las

    pginas index.jsp y hola.jsp. JSF conecta la vista y el modelo.

    En el ejemplo, se puede observar claramente que los

    componentes de la vista estn relacionados a los atributos de un

    Bean del modelo.

    En lo referente al Controlador, se puede observar en la pgina

    index.jsp que existen unas lneas para la captura de los datos de

    usuario y contrasea as como el botn de Aceptar.

    Adicionalmente, est el control para las reglas de navegacin,

    que aparece en el archivo faces-config.xml.

  • Ing. Wilson Rojas Reales

    Por ltimo, tambin hace parte del controlador algunas lneas del

    archivo web.xml. En la directiva se establece el nico

    servlet de nuestro ejemplo que es el propio framework JSF.

    En el contexto JSF, la lgica de negocio est contenida en los

    Beans. El diseo est contenido en las pginas web.

    Un Bean es una clase Java que contiene atributos y los mtodos

    get/set por cada uno de sus atributos.

    En una aplicacin JSF, se deben usar Beans para todos los datos

    accedidos por una pgina.

  • Definicin del Bean.La etiqueta indica laclase a la quepertence el beanusuario definido en

    El Bean estardisponible para unCliente, todo eltiempo que estconectado al sitioweb. Los valores semantienen.

  • Ing. Wilson Rojas Reales

    Cuando se carga la pgina es invocado el mtodo getNombre

    para obtener el valor del atributo nombre. Cuando se pulsa el

    botn Aceptar, es invocado el mtodo setNombre para

    establecer el valor que se ha digitado sobre el componente.

    En la pgina index.jsp, observamos la etiqueta

    h:commandButton

  • Ing. Wilson Rojas Reales

    Tiene un atributo denominado action (su valor es String) es usado

    para activar una regla de navegacin que est registrada en el

    archivo faces-config.xml

  • Ing. Wilson Rojas Reales

    La pgina hola.jsp

    En la etiqueta

    outputText se puedeespecificar un valor

    inmediato

  • Ing. Wilson Rojas Reales

    Una aplicacin JSF requiere un Serlvet llamado FacesServlet. Este

    acta como controlador. La configuracin est en el archivo

    web.xml

    El contenedor de Serlvets usa la regla del mapeado servlet para

    activar el serlvet JSF, quien elimina el sufijo faces y carga la

    pgina index.jsp

  • Ing. Wilson Rojas Reales

    Navegacin esttica: Ocurre dentro del navegador del cliente.

    Navegacin dinmica: para implementar este tipo de

    navegacin, el botn de ACEPTAR debe tener un mtodo

    referencia. Por ejemplo:

    en este caso, loginControlador hace referencia a un Bean y ste

    debe tener un mtodo denominado verificarUsuario

    Un mtodo de referencia en un atributo de accin, no tiene

    parmetros de entrada y devolver una cadena de caracteres,

    que ser usada para activar una regla de navegacin.

  • Ing. Wilson Rojas Reales

    De acuerdo al ejemplo anterior, tendramos: