Download - 10 JSP-JSF
-
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: