JSP v2.0 (Java Server Pages)
JSP v2.0 (Java Server Pages)
Contenido
1.
Primer vistazo a la tecnologa JSP Qu es y para qu sirve JSP Primer ejemplo Hola Mundo y la fecha Uso de objetos implcitos y ejemplo
Elementos bsicos de una pgina JSP Directivas <%@ (page | include | taglib) Cdigo Java <% (declaraciones | java | expresiones)
-> Ejercicio: instalacin y ejecucin de la primera aplicacin web con tecnologa JSP
1.
Introduccin a JSP
JSP es una especificacin de Sun Microsystems Sirve para crear y gestionar pginas web dinmicas Permite mezclar en una pgina cdigo HTML para generar la parte esttica, con contenido dinmico generado a partir de marcas especiales <% .... %> El contenido dinmico se obtiene, en esencia, gracias a la posibilidad de incrustar dentro de la pgina cdigo Java de diferentes formas Hay 3 formas de aadir contenido dinmico Su objetivo final es separar la interfaz (presentacin visual) de la implementacin (lgica de ejecucin)
3
Introduccin a JSP
Pgina JSP Servlet La pgina JSP se convierte en un servlet La conversin la realiza en la mquina servidora el motor o contenedor JSP, la primera vez que se solicita la pgina JSP Este servlet generado procesa cualquier peticin para esa pgina JSP Si se modifica el cdigo de la pgina JSP, entonces se regenera y recompila automticamente el servlet y se recarga la prxima vez que sea solicitada
Traduce Compila
Fichero.jsp
Motor JSP
ServletJsp.java
ServletJsp.class
Funcionamiento
Peticin fichero.jsp
Cliente
Respuesta
Servidor Web
peticin respuesta
1 vez
Motor JSP
1 vez
peticin 1 vez
ServletJSP.java
En esta pgina se mezcla cdigo HTML con cdigo Java incrustado con unas marcas especiales En este caso es una expresin, que se sustituye en la pgina por el resultado de evaluarla En otros casos es un trozo de cdigo Java que simplemente se ejecuta
6
Objetos implcitos
JSP utiliza los objetos implcitos, basados en la API de servlets. Estos objetos estn disponibles para su uso en pginas JSP y son los siguientes: Objeto request Representa la peticin lanzada en la invocacin de service(). Proporciona entre otras cosas los parmetros recibidos del cliente, el tipo de peticin (GET/POST) Objeto response Instancia de HttpServletResponse que representa la respuesta del servidor a la peticin. mbito de pgina
Objetos implcitos
out: Es el PrintWriter usado para enviar la salida al cliente. Es una versin con buffer de PrintWriter llamada JspWriter. Podemos ajustar el tamao del buffer, o incluso desactivar el buffer, usando el atributo buffer de la directiva page. Se usa casi exclusivamente en scriptlets ya que las expresiones JSP obtienen un lugar en el stream de salida, y por eso raramente se refieren explcitamente a out. session: Este es el objeto HttpSession asociado con la peticin. Las sesiones se crean automticamente, salvo que se use el atributo session de la directiva page para desactivar las sesiones, en cuyo caso los intentos de referenciar la variable session causarn un error en el momento de traducir la pgina JSP a un servlet.
9
Objetos implcitos
application: El ServletContext obtenido mediante getServletConfig().getContext(). config: El objeto ServletConfig. pageContext: JSP presenta una nueva clase llamada PageContext para encapsular caractersticas de uso especficas del servidor como JspWriters de alto rendimiento. La idea es que, si tenemos acceso a ellas a travs de esta clase en vez directamente, nuestro cdigo seguir funcionando en motores servlet/JSP "normales". page: Esto es slo un sinnimo de this, y no es muy til en Java. Fue creado como situacin para el da que el los lenguajes de script puedan incluir otros lenguajes distintos de Java.
10
mbitos
Define dnde y durante cuanto tiempo estn accesibles los objetos (Objetos implcitos, JavaBeans, etc) Tipos de mbitos: de pgina. El objeto es accesible por el servlet que representa la pgina de peticin de sesin. El objeto es accesible durante toda la sesin, desde los servlets a los que se accede de aplicacin. El objeto es accesible por el servlet que representa la pgina
11
12
Directivas. Afectan a toda la estructura del servlet generado Elementos de Scripting (guiones) Permiten insertar cdigo Java en la pgina JSP Acciones Afectan al comportamiento en tiempo de ejecucin del JSP
15
Directivas JSP
Utilizadas para definir y manipular una serie de atributos dependientes de la pgina que afectan a todo el JSP. Las directivas existentes son las siguientes:
16
18
autoflush ="true|false".
Un valor de true (por defecto) indica que el buffer debera desacargase cuando est lleno. Un valor de false, raramente utilizado, indica que se debe lanzar una excepcin cuando el buffe se sobrecargue. Un valor de false es ilegal cuando usamos buffer="none".
Esto indica la superclase del servlet que se va a generar. Debemos usarla con extrema precaucin, ya que el servidor podra utilizar una superclase personalizada. Define un string que puede usarse para ser recuperado mediante el mtodo getServletInfo.
extends ="package.class".
info ="message".
19
errorPage="url".
Especifica una pgina JSP que se debera procesar si se lanzar cualquier Throwable pero no fuera capturado en la pgina actual.
Indica si la pgina actual acta o no como pgina de error de otra pgina JSP. El valor por defecto es false.
isErrorPage="true|false".
Esto especifica el tipo MIME de la salida. El valor por defecto es text/html. Tiene el mismo valor que el scriptlet usando response.setContentType.
20
isThreadSafe="true|false"
Un valor de true (por defecto) indica un procesamiento del servlet normal, donde mltiples peticiones pueden procesarse simultneamente con un slo ejemplar del servlet, bajo la suposicin que el autor sincroniza los recursos compartidos. Un valor de false indica que el servlet debera implementar SingleThreadModel.
En algunos momentos, esto est pensado para especificar el lenguaje a utilizar. Por ahora, no debemos precuparnos por l ya que java es tanto el valor por defecto como la nica opcin legal.
language="java"
21
Indica al motor JSP que incluya el contenido del fichero correspondiente en el JSP, insertndolo en el lugar de la directiva del JSP. El contenido del fichero incluido es analizado en el momento de la traduccin del fichero JSP y se incluye una copia del mismo dentro del servlet generado. Una vez incluido, si se modifica el fichero incluido no se ver reflejado en el servlet El tipo de fichero a incluir puede ser un
23
<HTML> <head> <title> Hola, Mundo </title> </head> <body> <h1> Hola, Mundo! </h1> </body> </HTML>
<%@ page info="Un ejemplo Hola Mundo" import="java.util.Date" %> La fecha de hoy es: <%= new Date().toString() %>
24
Permite extender los marcadores de JSP con etiquetas o marcas generadas por el propio usuario (etiquetas personalizadas). Se hace referencia a una biblioteca de etiquetas que contiene cdigo Java compilado definiendo las etiquetas que van a ser usadas, y que han sido definidas por el usuario
Sintaxis
<%@ taglib uri=taglibraryURI prefix=tagPrefix %>
25
Cdigo HTML Directivas page include taglib Elementos de Scripting (guiones) Acciones (marcas estandar)
26
Elementos Scripting
Permiten la insercin de Declaraciones, Cdigo Java (scriptlets) y Expresiones dentro de una pgina JSP Hay 3 categoras: Declaraciones Cdigo Java arbitrario Expresiones
27
Usadas para definir variables y mtodos con mbito de clase para el servlet generado Estas variables o mtodos declarados pasarn a ser variables de instancia de la clase servlet generada Esto significa que sern globales a todo el servlet generado para la pgina Sintaxis
<%! Declaracin %>
Ejemplo:
<%! int contador >
28
%>
Ejemplo
<% int i,j; for (i=0;i<3;i++) { j=j+1; } %>
30
Pgina JSP que usa cdigo Java para repetir 10 veces un saludo
<HTML> <head><title> Pgina de ejemplo de scriptlet </title></head> <body> <h1> Pgina de ejemplo de scriptlet </h1> <% for (int i=0; i<10; i++;){ out.println("<b> Hola a todos. Esto es un ejemplo de scriptlet " + i + "</b><br>"); System.out.println("Esto va al stream System.out" + i ); //Esto ltimo va a la consola del Java, no al cliente, //out a secas es para la respuesta al cliente. } %> </body> </HTML>
31
Nota: ser necesario que previamente contador haya tomado un valor a travs de un scriptlet
32
33
Ejercicios
1.
Desarrollar una aplicacin web que permita el ingreso de 2 nmeros en un formulario y luego muestre una nueva pagina con el resultado de la suma. Crear una aplicacin que funcione como calculadora con todas las operaciones. Basarse en el ejercicio anterior, pero para las operaciones implementar un <select> con las operaciones.
2.
3.
Crear una aplicacin que funciones como conversor de dolares a pesos chilenos.
34
Cdigo HTML Directivas page include taglib Elementos de Scripting (guiones) Declaraciones Cdigo Java arbitrario Expresiones Acciones
35
Acciones estndar
Son marcas estndar, con formato XML, que afectan al comportamiento en tiempo de ejecucin del JSP y la respuesta se devuelve al cliente. En la traduccin de JSP al servlet, la marca se reemplaza por cierto cdigo Java que define a dicha marca. Una marca por tanto define un cierto cdigo Java (es como una macro) Constan de un prefijo y un sufijo adems de una serie de atributos. El prefijo es siempre jsp en las acciones estndar Sintaxis
<jsp:sufijo
atributos/>
Ejemplo
<jsp:include page=mijsp.jsp flush=true />
36
37
Accin jsp:include
Permite incluir un recurso especificado por la URL, en la peticin JSP en tiempo de ejecucin. Cuando se realiza la traduccin de JSP al servlet, dentro del mtodo _jspService() se genera el cdigo que comprueba si existe el recurso (pgina) y si no se crea, invocndolo a continuacin. Cuando se ejecuta el servlet, se invoca al recurso que realiza la operacin y devuelve el resultado al servlet El elemento incluido puede acceder al objeto request de la pgina padre, y adems de los parmetros normales, a los que se aadan con <jsp:param>
38
Accin jsp:include
Sintaxis <jsp:include page=URL flush=true> <jsp:param name=nombre clave value=valor /> (no obligatorios) .... </jsp:include>
39
40
<jsp:include> <jsp:param>
<jsp:forward>
<jsp:useBean> <jsp:setProperty> <jsp:getProperty> <jsp:plugin>
42
Accin jsp:param
Se usa como submarca dentro de cualquier otra marca Sirve para pasar parmetros a un objeto
Sintaxis <jsp:.... > <jsp:param name=nombre clave value=valor /> (no obligatorios) .... </jsp:.... >
43
<jsp:include> <jsp:param>
<jsp:forward>
<jsp:useBean> <jsp:setProperty> <jsp:getProperty> <jsp:plugin>
44
Accin jsp:forward
Esta marca permite que la peticin sea redirigida a otra pgina JSP, a otro servlet o a otro recurso esttico Muy til cuando se quiere separar la aplicacin en diferentes vistas, dependiendo de la peticin interceptada. Cuando se ejecuta el servlet se redirige hacia otro servlet y no se vuelve al servlet original Sintaxis <jsp:forward page=URL > <jsp:param name=nombre clave value=valor /> (no obligatorios) .... </jsp:forward>
45
Pgina JSP que lo ejecuta No tiene nada de HTML En funcin de los valores de los parmetros de la peticin redirige a una segunda pgina JSP (si es un usuario y una clave determinadas) o bien recarga la pgina inicial (incluyndola) Mezcla cdigo Java puro con acciones estndard
47
49
Accin jsp:useBean
Esta marca sirve para instanciar un JavaBean si no existe, o localizar una instancia ya existente, para su uso desde la pgina. Los JavaBeans son objetos Java que cumplen ciertas caractersticas en cuanto a su diseo: son serializables y tienen un constructor implcito. Se utilizan para reducir al mximo el cdigo Java insertado en una pgina JSP. En lugar de meterlo directamente en el fichero JSP se mete en una clase y una instancia de sta se llama desde el JSP Permite separar la lgica de ejecucin (en el JavaBean) de la presentacin (en el servlet generado) Se encapsula el cdigo Java en un objeto (JavaBean) y se instancia y usa con el JSP.
51
Accin jsp:useBean
Los JavaBeans se caracterizan porque a sus atributos (llamados propiedades) se acceden (por convenio) a travs de los mtodos setNombreAtributo y getNombreAtributo
Ojo, si el nombre va en minsculas el mtodo lleva la inicial del nombre en maysculas para nombre se pone getNombre.
Si se usa un JavaBean en una pgina habr que definir la clase correspondiente, creando los mtodos set y get para los atributos definidos. Normalmente se suele definir dentro de un paquete. Dentro del servlet generado se puede llamar a mtodos de un JavaBean que se encarguen de realizar ciertas operaciones y el servlet muestra el resultado de las mismas Ventaja del traslado de la lgica a un JavaBean Separacin de interfaz de la implementacin
52
Accin jsp:useBean
Sintaxis
<jsp:useBean id=nombre scope=nombrembito detalles />
Caractersticas de los atributos de esta accin: En id se define el nombre asignado al JavaBean (identificador asociado) El mbito se refiere a dnde puede referenciarse el JavaBean. Permite compartir objetos en una sesin
page,request,session y application
53
Accin jsp:useBean
class=Nombre de la clase del JavaBean (es lo que ms se usa) id: Da un nombre a la variable que referencia al bean. Se usar un objeto bean anterior en lugar de instanciar uno nuevo si se puede encontrar uno con el mismo id y scope. class: Designa el nombre completo del paquete del bean. scope: Indica el contexto en el que el bean debera estar disponible. Hay cuatro posibles valores: page, request, session, y application. type: Especifica el tipo de la variable a la que se referir el objeto. beanName: Da el nombre del bean, como lo suministraramos en el mtodo instantiate de Beans. Esta permitido suministrar un type y un beanName, y omitir el atributo class.
54
Accin jsp:setProperty
Esta marca se utiliza junto con la marca useBean para asignar valor a las propiedades del Bean En el mtodo _jspService() del servlet generado se invoca al mtodo set de la propiedad deseada.
2 usos:
Despus de un useBean.
<jsp:useBean id="myName" ... /> ... <jsp:setProperty name="myName property="someProperty" ... />
55
Accin jsp:setProperty
Dentro de un useBean <jsp:useBean id="myName ... > ... <jsp:setProperty name="myName" property="someProperty" ... /> </jsp:useBean>
56
Accin jsp:setProperty
Sintaxis
<jsp:setProperty name=identificador del Bean detalles de la propiedad />
seleccionar. Sin embargo, hay un caso especial: un valor de "*" significa que todos los parmetros de la peticin cuyos nombres correspondan con nombres de propiedades del Bean sern pasados a los mtodos de seleccin apropiados. value: Este atributo opcional especifica el valor para la propiedad. Los valores string son convertidos automticamente a lo que corresponda mediante el mtodo estndard valueOf. No se pueden usar value y param juntos, pero si est permitido no usar ninguna.
param: Este parmetro opcional designa el parmetro de la peticin del que se debera derivar la propiedad. Si la peticin actual no tiene dicho parmetro, no se hace nada: el sistema no pasa null al mtodo seleccionador de la propiedad. 57
Accin jsp:setProperty
property=* (se cogen como propiedades y valores todos los parmetros del objeto request) property=Nombre (se coge un parmetro con el mismo nombre del objeto request) property=Nombre param=NombreParmetro (si se desean nombres distintos) property=Nombre value=valor parmetro (se asignan propiedades arbitrarias con valores concretos)
58
Accin jsp:getProperty
Se utiliza para obtener el valor de las propiedades de un Bean. Dentro del mtodo _jspService() del servlet generado se accede al valor de una propiedad, lo convierte a string y lo imprime en la salida del cliente (objeto out). Sintaxis
59
61
Fichero lenguaje/beans.jsp que usa un Bean para elaborar los resultados y los muestra
Usa un Bean generado a partir de la clase denominada LenguajeBean que est en el paquete es.uniovi.di.servinfo.lenguaje con mbito de pgina
<jsp:setProperty name="lenguajeBean" property="*"/>
<body> <h1> Resultado de prueba del uso de beans </h1> <p> Hola <jsp:getProperty name="lenguajeBean" property="nombre" />. </p>
coge el valor de la propiedad indicada y lo imprime para lo cual se ejecuta un mtodo del Bean con el nombre de la propiedad
<p> Tu lenguaje favorito es <jsp:getProperty name="lenguajeBean" property="lenguaje" />. </p> <p> Mis comentarios acerca del lenguaje <p> <jsp:getProperty name="lenguajeBean" property="comentariosLenguaje" />. </p> </body> </HTML>
63
Accin jsp:plugin
Permite incluir applets en la jsp que la define, sin que el programador deba preocuparse ni por su correcta visualizacin en el cliente ni de que sus recursos se hospeden en el mismo servidor que la jsp. No obstante, cuando en la mquina cliente hay instaladas varias versiones del JRE, puede haber problemas. Lo que hace esta accin es identificar el tipo y versin del cliente web mediante el encabezado de peticin User-Agent y generar cdigo html especfico para ese cliente que permita asegurar la correcta visualizacin del applet sin importar versin ni tipo de cliente. Tiene muchos atributos coincidentes con los de la etiqueta <applet> asociada a los applets Java. Los principales son los siguientes:
67
type
El valor applet es el ms normal. Indica el tipo de componente que va a insertarse Si incluimos un bean grfico, utilizaramos bean Obligatorio
code
Nombre de la clase del applet Obligatorio
68
width
Anchura en pxeles Obligatorio
height
Altura en pxeles Obligatorio
codebase
archive
Indica el fichero jar donde estn almacenados el applet y sus recursos No es obligatorio
JSP 2.0
Algunas nuevas caractersticas de JSP 2.0 frente a 1.2 orientadas a simplificar su desarrollo son:
Simple Expression Language (EL) Fragmentos JSP Ficheros de Tags Manejadores de Etiquetas Simplificados
74
Simplifican el uso de expresiones en JSPs. Permite la ejecucin de expresiones fuera de los elementos de scripting de JSP Fue introducida con JSTL 1.0 como un mecanismo alternativo al uso de expresiones en Java para asignar valores a atributos
Desde JSP 2.0 el JSP container entiende expresiones en EL EL es mucho ms tolerante sobre variables sin valor (null) y realiza conversiones automticas de datos Se puede habilitar (por defecto) o deshabilitar el uso de expresiones EL:
<%@ page isScriptingEnabled="true|false" isELEnabled="true|false"%>
75
Sintaxis de EL
Literales:
Ejemplos:
${false} <%-- evaluates to false --%> ${3*8}
76
Sintaxis de EL
Operadores:
Aritmticos: +, -, *, /, div, %, mod, Lgicos: and, &&, or, ||, !, not Relacionales: ==, eq, !=, ne, <, lt, <, gt, <=, le, >=, ge Vaco, empty, valida si una variable es null o una colleccin no tiene elementos Llamadas a funcin, donde func es el nombre de la funcin y args es 0 o ms argumentos separados por comas. Condicional: A ? B: C, como en C y Java
Ejemplos:
${ (6 * 5) + 5 } <%-- evaluates to 35 --%> ${empty name}
77
Sintaxis de EL
Objetos implcitos:
pageContext contexto del JSP, puede usarse para acceder a objetos implcitos como request, response, session, out, servletContext, etc.
param
paramValues
header
headerValues
${headerValues.name}
cookie
initParam
Sintaxis de EL
Objetos implcitos:
requestScope
${requestScope.objectName} ${requestScope.objectName.attributeName}
sessionScope
${sessionScope.name}
applicationScope
79
Ejemplos EL
${amount + 5} , aade 5 a una variable amount ${order.amount + 5}, aade 5 a la propiedad amount del bean order
80
Ejemplos EL
El operador ?:
<select name="artist"> <option value="1" ${param.artist == 1 ? 'selected' : ''}> Vesica Pisces <option value="2" ${param.artist == 2 ? 'selected' : ''}> Cortical Control <option value="3" ${param.artist == 3 ? 'selected' : ''}> Vida Vierra </select>
81
Errores en servlets and JSPs desde su versin 2.0 vienen dadas en la variable javax.servlet.error.exception La propiedad errorData del objeto implcito pageContext expone informacin sobre el problema. javax.servlet.jsp.ErrorData tiene las siguientes propiedades:
requestURI la URI para la que fall la peticin servletName el nombre del servlet o JSP que fall statusCode el cdigo del fallo throwable la excepcin que caus la invocacin de la pgina de error
82
83
En el web.xml se puede indicar que esta es la pgina de error mediante los siguientes elementos:
... <error-page> <exceptiontype>java.lang.Throwable</exception-type> <location>/error.jsp</location> </error-page> <error-page> <exception-code>500</exception-code> <location>/error.jsp</location> </error-page> ...
84
Las reglas de web.xml estn definidas en un XML Schema Las configuraciones especficas de JSP han sido movidas a un nuevo elemento XML
Usar Schemas en vez de DTDs nos permite colocar los elementos XML de primer nivel en cualquier orden y realizar an mas verificaciones sobre la sintaxis de web.xml Todos los elementos especficos a la configuracin de un JSP se encuentran agrupados dentro del nuevo elemento <jspconfig>.
85
Elemento jsp-config
Permite aplicar configuraciones a un grupo de JSPs que conforman con un patrn de url especfico
... <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> </jsp-property-group> </jsp-config> ...
86
Elemento jsp-config
Elemento
<el-ignored> <scriptinginvalid> <pageencoding>
Descripcin
Indica si ignorar o no las expresiones EL dentro de un JSP correspondiente al patrn URL indicado. Por defecto es false. Si es true no se pueden introducir scriplets en el JSP. Indica la codificacin de caracteres para un conjunto de JSPs Indica el path correspondiente a un fichero a aadir al final de cada pgina JSP.. Lo mismo pero al comienzo de cada JSP. Si se asigna a true la sintaxis de los JSPs es en XML.
87
<includecoda>
<includeprelude> <is-xml>
Ejercicios
1. 2. 3. 4.
Modificar la pgina ej4_directivainclude.jsp para incluir tambin el fichero incluido.jsp como accin include Cambiar la pgina HTML o JSP y volver a ejecutar comprobando resultados Ejecutar el ejemplo del Bean que evala el lenguaje preferido del cliente Crear un Bean que funcione como sumadora.
Usar como base sumadora.html para sumadorabean.html, lenguajebean.jsp para sumadorabean.jsp lenguajebean.java y sumadora.jsp para sumadorabean.java
5. 6.
Ampliar la sumadora a calculadora con ms operaciones Usar un Bean para crear un euroconversor
88
<%@ page ATRIBUTOS %> <%@ include file=Nombre del fichero %>
<%@ taglib uri=taglibraryURI prefix=tagPrefix %>
<% ! Declaracin %> <% cdigo Java %> <%= Expresin Java a evaluar %>
89
JavaBeans nos permiten separar la parte de presentacin de una pgina JSP de la implementacin de una regla de negocio
Sin embargo, slo 3 elementos accin en JSP se pueden usar para acceder a un bean:
Por tanto a menudo tenemos que incluir cdigo en un JSP JSP (1.1 en adelante) define custom tags que pueden ser usadas para definir acciones propietarias, de manera que en nuestro JSP nicamente tenemos cdigo de marcado
91
Un buen diseo pasa por evitar en la medida de lo posible la primera de las tres opciones
92
Mantenimiento de sesiones
Dado que el JSP se convierte en un servlet, todo lo visto en servlets es vlido con JSP. Uso de Interfaz HttpSession para la gestin de sesiones El objeto session se crea automticamente en JSP (puede suprimirse con page) El objeto session es un diccionario al que se pueden asociar objetos (atributos) y darles un nombre (tambin eliminar)
session.setAttribute(mipaquete.sesion.nombre, miObjeto);
Todo lo visto en servlets es aplicable en JSP Mecanismos Declarativo. Usa un mecanismo proporcionado por el motor de servlets
Indicar restricciones de seguridad Indicar el modo de realizar la autentificacin Indicar los usuarios definidos en el sistema Generar formulario html para nombre y clave Generar pgina JSP que accede a Base de Datos, comprueba clave y se fijan los parmetros de seguridad en el JavaBean, cuyo mbito se restringe a la sesin que acaba de establecer el usuario
94
Por programa
Para utilizar un documento XML en una aplicacin es preciso analizarlo Existen dos modelos de analizadores aceptados:
DOM (Modelo de objetos de documento) SAX (API simple para XML) El analizador crea una estructura de datos en memoria en forma de rbol, donde se coloca todos los elementos del documento Ofrece mtodos para acceso a los nodos y a la informacin de los mismos a travs de una API En lugar de crear un rbol, va leyendo el archivo XML y ejecuta acciones segn las etiquetas encontradas.
95
Analizador SAX
Incluir el cdigo Java para la manipulacin del documento XML o bien incluir un JavaBean que lo manipule o bien definir una etiqueta personalizada que envuelva la operacin dentro de su clase
96
Veamos cmo realizar la autenticacin de usuarios en base a un fichero XML con los datos de autenticacin
AutenticacionBean
Entrada login01.jsp
Proceso login02.jsp
OK si.html
NO no.html
Usuarios.xml
97
98
<%! String usuario=; %> <%! String pwd=; %> <%! String redireccionURL =; %>
Instanciacin del JavaBean responsable de mantener informacin del usuario mientras dure la sesin
100
Recuperacin de los datos de identificacin del usuario enviados desde el formulario HTML de la pgina previa
}
101
// Apertura del archivo URL url=new URL(archivoXml); InputStream datosXML=url.openStream(); // Construccin del documento XML DocumentBuilder builder=factory.newDocumentBuilder(); documento=builder.parse(datosXML); //Generacin de lista de nodos en base a la clave usuario NodeList listaNodos=documento.getElementsByTagName(usuario );
102
103
Cdigo JavaScript que permite el reenvo de una pgina a otra, de forma que se pueda presentar al visitante la pgina adecuada dependiendo de que haya sido posible la autenticacin o no
Control de la sesin
El JavaBean Autenticacion.java lleva a cabo el control Es posible comprobar en cada pgina web si el usuario est autorizado llamando al JavaBean Los mtodos set de las propiedades nombre y clave se invocan desde las pginas de control de la lgica de aplicacin (login02.jsp) una vez que el usuario ha sido validado Los mtodos get devuelven objetos String con la identificacin y la autorizacin del usuario
105
106
107
2.
3.
Primera vista a la tecnologa JSP Qu es y para qu sirve JSP Primer ejemplo Hola Mundo y la fecha Uso de objetos implcitos y ejemplo Elementos bsicos de una pgina JSP Directivas <%@ (page | include | taglib) Cdigo Java <% (declaraciones | java | expresiones) Acciones estndar <jsp:accin (include |forward | usebean| getproperty | setproperty) Elementos Avanzados de una pgina JSP Acciones personalizadas (etiquetas)
Definicin de la estructura (biblioteca.tld y sta en web.xml) Nombre, clase controladora, atributos, cuerpo, etc. Definicin de la funcionalidad (JavaBean que deriva de taglib) Declaracin en pgina con <%@taglib y uso posterior
108
La tecnologa JSP permite diseo de aplicaciones web con generacin dinmico de pginas web tras un procesamiento La lgica de la aplicacin (procesamiento) se invoca desde una pgina html mediante tres posibles modos
Inclusin de cdigo Java Invocacin de objetos (JavaBeans) que implementen la lgica Invocacin de etiquetas personalizadas que implementen la lgica
3.
Para realizar un buen diseo que separe interfaz de lgica no se debe incluir directamente el cdigo Java. De este modo estn separadas las funciones:
Diseador de interfaces (JSP sin cdigo Java -> html y marcas) Programador de la lgica de la aplicacin (JavaBeans que implementan la funcionalidad)
4.
Una pgina JSP se transforma automticamente en un servlet. La ventaja es que el diseo de la interfaz no se mezcla con la programacin en Java
109
110