10 JSP-JSF

Informática III Ing. Wilson Rojas Reales Esp. Seguridad de la Información Universidad de los Andes Correo: rojaswilson@

Views 72 Downloads 0 File size 3MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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

Ing. Wilson Rojas Reales

 Las páginas JSP están compuestas de código HTML / XML mezclado con etiquetas especiales y fragmentos de código escritos en Java.  Una página JSP puede ser escrita en un editor de texto, lo cual quiere decir que podemos incluir lógica de negocio (no recomendable) en la misma página.  El motor de las páginas JSP, está basado en los servlets de Java. El código se almacena en un archivo con extensión 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 páginas JSP’s ??? El motivo de crear servlets es utilizarlos como controlador, esa es la función principal de un servlets.  Cuando una página JSP es invocada, el servidor la traduce en un Servlet, el resultado es un archivo con extensión java que será compilado en su correspondiente .class  Objetos implícitos: 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 página. Este ejemplo, simplemente muestra un formulario que solicita login y password. E Incluye la página jsp: fecha.jsp. Usted deberá acceder a la página de la siguiente forma: http://localhost:8080/jsp/ejemplo01/Ejemplo.jsp • Sería un grave error acceder a la página Ejemplo.jsp sin la existencia de la página fecha.jsp (para este primer ejemplo, puesto que podemos controlar el acceso a una página que no exista). Observe que en el formulario se hace un llamado (método action) a otra página JSP llamada: Mostrar.jsp

Ing. Wilson Rojas Reales

Ing. Wilson Rojas Reales

Ing. Wilson Rojas Reales



Las páginas JSP de una aplicación 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 aplicación web tiene 4 partes: • • • •

Un directorio público Un fichero WEB-INF/web.xml Un directorio WEB-INF/classes Un directorio WEB-INF/lib

• El área pública es la raíz de la aplicación, excepto el directorio WEB-INF • El directorio WEB-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 aplicación

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 fácilmente en cualquier página JSP, facilitando así la separación de la lógica de negocio, que incluiremos en los componentes, de la capa de presentación. • 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 continuación se explica el ejemplo.

Ing. Wilson Rojas Reales

• En la página Saludo.jsp se crea un objeto (bfecha) de su clase (beans.BeanFecha) a través 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 excepción para su posterior tratamiento, una página jsp deberá incluir la siguiente línea:

• La línea anterior indica al motor JSP que cuando ocurra una excepción que no sea capturada, ejecute la página error.jsp • la página 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 configuración: • Utilizaremos un archivo de BD de Access. • Debe crear el DSN • Este ejercicio, realiza la conexión a un archivo de Access, muestra información de una tabla. • Se valida el ingreso del usuario. Si no existe, se regresa a la página inicial. Si existe se redirecciona a la página correspondiente. • El ejercicio NO está completo al 100%. EL estudiante si así lo desea, deberá construir las demás páginas JSP. Además, es un ejemplo académico 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 configuración ODBC desde el panel de Control de Windows:

Ing. Wilson Rojas Reales

• La página inicial de acceso al ejercicio y un ingreso exitoso:

Ing. Wilson Rojas Reales

El siguiente paso en el desarrollo web



El objetivo de la tecnología JSF (Java Server Faces) es desarrollar aplicaciones WEB de forma parecida a como se construyen aplicaciones locales con Java Swing, AWT, SWT o cualquier otra API similar.



Los dos componentes principales son: • Una librería de etiquetas para JSP • Una API para manejo de eventos, validadores, etc.





Permite a los desarrolladores pensar en términos de componentes, eventos, backing beans y otras interacciones, en vez de hablar de peticiones, respuestas y marcas.



JSF promete reutilización, separación de roles, facilidad de uso de las herramientas.



JSF tiene una meta específica: hacer el desarrollo web más rápido y fácil.



JSF (en J2EE) es similar a ASP .NET: • Interfaz de usuario dirigida por eventos, • Abstracción del protocolo HTTP

HTML Controles en ASP .NET

De validación De servidor

Tienen correspondencia en JSF



Servlets • Inconvenientes:    

Poco legible Mantenimiento costoso El diseñador gráfico 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) • Páginas HTML con scripts (por defecto Java) • Se traduce a un servlet en la primera petición • Semánticamente equivalente a los servlets • Facilitan el desarrollo y mantenimiento



JSP 1.x • Facilidad para manejo de JavaBeans





JSP 1.x • Otras etiquetas estándar de JSP




N/A




JSTL (Ejemplo sin scriptlets, con JSTL)

Librería básica






Etiqueta N/A
Lenguaje de expresiones Iterador





JSP 2.0 • Evolución de JSP 1.2 • Separación completa de roles • Todavía se habla de cabeceras, sesión, … • Elementos principales:    

Lenguaje de expresiones (EL) Ficheros de etiquetas SimpleTag vs Tag Mejorada la sintaxis XML



JSP 2.0 • Lenguaje 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.0 • Ejemplos de EL

Sin EL

Con EL

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

 ${duck.beakColor}

 ${foo.bar}



JSP 2.0 • Archivos de etiquetas  Escribir etiquetas sólo con código JSP  Mecanismo de reutilización para autores de páginas  Empaquetado de la aplicación más flexible  Etiquetas en /WEB-INF/tags  TLD implícito 



JSP 2.0 • Ejemplo de archivo de etiqueta.





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


      

Componentes de interfaz de usuario Eventos Beans manejados Validadores Internacionalización y localización Conversores Navegación



Los componentes de la interfaz de usuario • Son JavaBeans • Se ejecutan en el lado del servidor • Tienen estado • Se organizan en árboles de vistas • Representación específica: renderer • Familia de representaciones: kits de renderer





Los componentes de la interfaz de usuario





Los componentes de la interfaz de usuario • Ejemplo (traducción de JSF a HTML) (1 de 2)

Enter address:



Los componentes de la interfaz de usuario • Ejemplo (traducción de JSF a HTML) (2 de 2)

Enter address: Validation Error: Value is required.



Eventos • Los 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



Eventos • Ejemplo: value-change event

public void processValueChanged(ValueChangeEvent event){ HtmlInputText sender = (HtmlInputText)event.getComponent(); sender.setReadonly(true); changePanel.setRendered(true); }



Eventos • Ejemplo: action event