Aplicaciones Web de Servidor - PowerPoint PPT Presentation

About This Presentation
Title:

Aplicaciones Web de Servidor

Description:

double espacio = toDouble(request.getParameter('espacio')); double tiempo = toDouble(request.getParameter('tiempo')); double speed = espacio/tiempo; ... – PowerPoint PPT presentation

Number of Views:56
Avg rating:3.0/5.0
Slides: 62
Provided by: MCO145
Category:

less

Transcript and Presenter's Notes

Title: Aplicaciones Web de Servidor


1
Aplicaciones Web de Servidor
  • Introducción a JavaServer Pages (JSP)
  • 18 y 25 de Abril de 2007

2
La especificación JSP 1.2 Qué es una JSP?
  • Las JavaServer Pages (JSP) nos permiten separar
    la parte dinámica de nuestras páginas Web del
    código estático. Para ello
  • Simplemente escribimos el HTML (o XML) regular de
    la forma normal, usando cualquier herramienta de
    construcción de paginas Web.
  • Encerramos el código de las partes dinámicas en
    unas etiquetas especiales, la mayoría de las
    cuales empiezan con lt y terminan con gt.

ltHTMLgt ltHEADgt ltTITLEgtEjemplo Hola mundo en
una JSPlt/TITLEgt lt/HEADgt ltBODYgt lt
out.println(Hola mundo desde una JSP) gt
lt/BODYgt lt/HTMLgt
3
La especificación JSP 1.2 Funcionamiento.
4
Elementos JSP
5
La especificación JSP 1.2 Elementos de script
JSP y su notación XML.
  • Los elementos de script nos permiten insertar
    código Java dentro del servlet que se generará
    desde la página JSP actual. Hay tres formas
  • Expresiones de la forma lt expresión gt que son
    evaluadas e insertadas en la salida.
  • Scriptlets de la forma lt codigo gt que se
    insertan dentro del método service() del servlet.
  • Declaraciones de la forma lt! codigo gt que se
    insertan en el cuerpo de la clase del servlet,
    fuera de cualquier método existente.
  • Directivas de la forma lt_at_ directive
    atributo1"valor1"... atributoN"valorN" gt que
    afectan a la estructura general del servlet
    generado.
  • Acciones de la forma ltjspaccion /gt que permiten
    realizar operaciones como acceso a JavaBeans,
    inclusión de paginas,...

6
La especificación JSP 1.2 Expresiones JSP.
  • Una expresión JSP se usa para insertar valores
    Java directamente en la salida. Tiene la
    siguiente forma
  • lt expresión Java gt
  • La expresión Java es evaluada, convertida a un
    string, e insertada en la página. Esta evaluación
    se realiza durante la ejecución (cuando se
    solicita la página) y así tiene total acceso a la
    información sobre la solicitud. Por ejemplo, esto
    muestra la fecha y hora, del servidor, en que se
    solicitó la página
  • Current time lt new java.util.Date() gt
  • Notación XML
  • ltjspexpressiongt Expresión Java
    lt/jspexpressiongt

7
La especificación JSP 1.2 Ejemplo 1Expresiones
Fichero Expresiones.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gt ltHTMLgt ltHEADgt ltTITLEgtEjemplo1
Expresioneslt/TITLEgt lt/HEADgt ltBODYgt ltH2gtEjemplos
de expresiones JSPlt/H2gt ltULgt ltLIgtHora actual en
el servidor lt new java.util.Date() gt
ltLIgtNombre del host lt request.getRemoteHost()
gt ltLIgtIdentificador de sesion lt
session.getId() gt ltLIgtValor del parametro
testParam lt request.getParameter("testPar
am") gt lt/ULgt lt/BODYgt lt/HTMLgt
8
La especificación JSP 1.2 Scriptlets JSP.
  • Si queremos hacer algo más complejo que insertar
    una simple expresión, los Scriptlets JSP nos
    permiten insertar código Java arbitrario dentro
    del método servlet que será construido al generar
    la página. Los Scriptlets tienen la siguiente
    forma
  • lt Código Java gt
  • El código dentro de un scriplet se insertará
    exactamente como está escrito, y cualquier HTML
    estático anterior o posterior al scriptlet se
    convierte en sentencias print(). Por tanto no se
    necesita completar la sentencias Java, y los
    bloques abiertos pueden afectar al HTML estático
    fuera de los scriplets.
  • Notación XML
  • ltjspscriptletgt Código lt/jspscriptletgt

9
La especificación JSP 1.2 Ejemplo 2 Scriplets
JSP.
Fichero BGColor.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gt ltHTMLgt ltHEADgt ltTITLEgtColor
de Fondolt/TITLEgt lt/HEADgt lt String bgColor
request.getParameter("bgColor") boolean
hasExplicitColor if (bgColor ! null)
hasExplicitColor true else
hasExplicitColor false bgColor
"WHITE" gt ltBODY BGCOLOR"lt bgColor gt"gt ltH2
ALIGN"CENTER"gtColor de Fondolt/H2gt
10
La especificación JSP 1.2 Ejemplo 2 Scriplets
JSP (continuación).
Fichero BGColor.jsp
lt if (hasExplicitColor) out.println(Establec
ido el color de fondo bgColor
.) else out.println(Usando los colores
de fondo por defecto.) gt lt/BODYgt lt/HTMLgt

11
La especificación JSP 1.2 Declaraciones JSP.
  • Una declaración JSP nos permite definir métodos o
    atributos que serán insertados dentro del cuerpo
    principal de la clase servlet (fuera del método
    service() que procesa la petición). Tienen la
    siguiente forma
  • lt! Código Javagt
  • Como las declaraciones no generan ninguna salida,
    normalmente se usan en conjunción con expresiones
    JSP o Scriptlets.
  • Notación XML
  • ltjspdeclarationgtCódigolt/jspdeclarationgt

12
La especificación JSP 1.2 Ejemplo 3
Declaraciones JSP.
Fichero ContadorDeAccesos.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gt ltHTMLgt ltHEADgt ltTITLEgtEjemplo3
Declaraciones JSPlt/TITLEgt lt/HEADgt ltBODYgt ltH1gtDecl
araciones JSPlt/H1gt lt! private int accessCount
0 gt ltH2gtNúmero de accesos al servidor desde que
se inició lt accessCount gtlt/H2gt lt/BODYgt lt/H
TMLgt
13
La especificación JSP 1.2 Comentarios JSP.
  • Comentarios ocultos JSP Estos comentarios no son
    visibles en la página generada y tienen la forma
  • lt-- texto --gt
  • Comentarios visibles JSP Estos comentarios son
    visibles en la página generada, incluso se pueden
    mezclar con expresiones JSP
  • lt!- texto ltexpresion JSPgt --gt

14
Directivas JSP
15
La especificación JSP 1.2 Directivas JSP.
  • Una directiva JSP afecta a la estructura general
    de la clase servlet que resulta de la compilación
    de la JSP. Normalmente tienen la siguiente forma
  • lt_at_ directive atributo1"valor1"
    atributo2"valor2" ... atributoN"valorN" gt
  • NOTACION XML
  • ltjspdirective.TIPO_DE_DIRECTIVA
    atributo1"valor1" atributo2"valor2" ...
    atributoN"valorN /gt
  • Hay tres tipos de directivas
  • page, que nos permite hacer cosas como importar
    clases, personalizar la superclase del servlet,
    establecer el tipo de contenido, etc.
  • include, que nos permite insertar un fichero
    dentro de la clase servlet en el momento que el
    fichero JSP es traducido a un servlet.
  • taglib, que nos permite definir etiquetas
    personalizadas.

16
La especificación JSP 1.2 Directiva page.
  • La directiva page dirige al motor Servlets
    sobre la configuración general de la página.
  • Nos permite definir uno o mas de los siguientes
    atributos aplicables a toda la página
  • lt_at_ page importpaquete.class
    paquete.,
  • sessiontruefalse
  • contentTypetipoMimecharsetCharacter-Set
  • text/htmlcharsetISO-8859-1
  • pageEncoding"characterSet ISO-8859-1
  • errorPageURL
  • isErrorPagetruefalse
  • isThreadSafetruefalse
  • languagejava
  • extendspaquete.class
  • buffernone8kbsizekb
  • autoFlushtruefalse
  • infotexto
  • gt

17
La especificación JSP 1.2 Directiva page.
Atributo import.
  • El atributo import nos permite especificar los
    paquetes que deberían ser importados. Si no se
    especifica nada en el servlet se importan los
    siguientes paquetes por defecto
  • java.lang.
  • javax.servlet.
  • javax.servlet.jsp.
  • javax.servlet.http.
  • Puede aparecer de una de las siguientes formas
  • lt_at_ page importpaquete.clasegt
  • lt_at_ page importpaquete.clase1, ...,
    paquete.claseNgt
  • EL atributo import es el único que puede aparecer
    más de una vez dentro de una JSP.

18
La especificación JSP 1.2 Ejemplo 1 Directiva
page.
Fichero AtributoImport.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gt ltHTMLgt ltHEADgt
ltTITLEgtEjemplo1 Directiva page. Atributo
importlt/TITLEgt lt/HEADgt ltBODYgt ltH2gtEjemplo1
Directiva page. Atributo import lt/H2gt lt_at_ page
import"java.util.,servletsyjsps." gt lt--
Declaraciones JSP --gt lt! private String
randomID() int num (int)(Math.random()10000
000.0) return("id" num) private final
String NO_VALUE "ltIgtNo Valuelt/Igt" gt
19
La especificación JSP 1.2 Ejemplo 1 Directiva
page (continuación).
Fichero AtributoImport.jsp
lt-- Scriptlet JSP --gt lt Cookie cookies
request.getCookies() String oldID
ServletUtilities.getCookieValue(cookies,
"userID", NO_VALUE) String newID if
(oldID.equals(NO_VALUE)) newID
randomID() else newID oldID LongLivedC
ookie cookie new LongLivedCookie("userID",
newID) response.addCookie(cookie) gt lt--
Expresiones JSP --gt La última vez que se accedió
a esta página fue lt new Date() gt con un id de
usuario lt oldID gt. lt/BODYgt lt/HTMLgt
20
La especificación JSP 1.2 Directiva page.
Atributo session.
  • El atributo session indica si la página JSP
    participa o no en una sesión HTTP.
  • El atributo puede tomar los valores
  • lt_at_page sessiontruefalse gt
  • Un valor true (valor por defecto) indica que la
    variable predefinida session (del tipo
    HttpSession) debería unirse a la sesión existente
    si existe una, y si no existe se debería crear
    una nueva sesión para unirla.
  • Un valor de false indica que no se usarán
    sesiones.

21
La especificación JSP 1.2 Directiva page.
Atributo contentType.
  • El atributo contentType especifica el tipo MIME
    de la salida. El valor por defecto es text/html e
    ISO-8859-1.
  • Puede aparecer de una de las siguientes formas
  • ltpage contentTypetipoMimecharsetCharacter-S
    et gt
  • Algunos de tipos MIME más comunes son

Type Significado
text/html Documento HTML
text/plain Texto plano
text/css Hoja de estilo
image/GIF Imagen GIF
image/jpeg Imagen JPEG
video/mpeg Video clip MPEG
video/quicktime Video clip QuickTime
Type Significado
application/msword Documento Word
application/pdf Documento PDF
application/x-gzip Archivo Gzip
application/ x-java-archive Fichero JAR
application/zip Archivo ZIP
application/ postscript Fichero PostScript
22
La especificación JSP 1.2 Ejemplo 2 Directiva
page.
Fichero Excel.jsp
lt_at_ page contentType"application/vnd.ms-excel"
gt lt-- Hay que poner tabuladores entre los datos
no espacios. --gt 1997 1998 1999 2000 2001
(Anticipated) 12.3 13.4 14.5 15.6 16.7

23
La especificación JSP 1.2 Directiva page.
Atributo pageEncoding.
  • El atributo pageEncoding especifica el juego de
    caracteres que usará la página JSP para el
    response.
  • El atributo puede aparecer de las formas
  • lt_at_ page pageEncoding"characterSet ISO-8859-1"
    gt
  • El valor por defecto es ISO-8859-1

24
La especificación JSP 1.2 Directiva page.
Atributos errorPage, isErrorPage.
  • El atributo errorPage especifica una página JSP
    que se debería procesar si se lanzará cualquier
    Throwable pero no fuera capturado en la página
    actual.
  • Si el path empieza con una "/", el path es
    relativo al directorio raíz de documentos de la
    aplicación JSP y es resuelto por el servidor Web.
    Si no, el path es relativo al fichero JSP actual.
  • El atributo isErrorPage indica si la página
    actual actúa o no como página de error de otra
    página JSP.
  • El a tributo puede tomar los valores
  • lt_at_page isErrorPagetruefalse gt
  • Si es true, podemos usar el objeto exception, que
    contiene una referencia a la excepción lanzada,
    en el fichero JSP.
  • Si es false (valor por defecto), significa que no
    podemos usar el objeto exception en el fichero
    JSP.

25
La especificación JSP 1.2 Ejemplo 3 Directiva
page.
Fichero Velocidad.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gt ltHTMLgt ltHEADgt ltTITLEgtEjemplo
3 Directiva pagelt/TITLEgt lt/HEADgt ltBODYgt lt_at_ page
errorPageVelocidadError.jsp" gt lt! // Observa
que se lanzará un excepcion NumberFormatException
si el valor es nulo o // esta mal
formateado private double toDouble(String value)
return(Double.valueOf(value).doubleValue())
gt lt double espacio toDouble(request.getParam
eter(espacio)) double tiempo
toDouble(request.getParameter(tiempo)) double
speed espacio/tiempo gt
26
La especificación JSP 1.2 Ejemplo 3 Directiva
page (continuación).
Fichero Velocidad.jsp
ltULgt ltLIgtEspacio lt espacio gt. ltLIgtTiempo
lt tiempo gt. ltLIgtVelocidad lt speed
gt. lt/ULgt lt/BODYgt lt/HTMLgt
27
La especificación JSP 1.2 Ejemplo 3 Directiva
page (continuación).
Fichero VelocidadError.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gt ltHTMLgt ltHEADgt ltTITLEgtPágina de
errorlt/TITLEgt lt/HEADgt ltBODYgt lt_at_ page
isErrorPage"true" gt ltTABLE BORDER5
ALIGN"CENTER"gt ltTRgtltTH CLASS"TITLE"gt
Error al calcular la velocidadlt/TABLEgt ltPgt Hay un
error en la página Velocidad.jsp ltIgtlt
exception gtlt/Igt. ltPREgtlt exception.printStackTra
ce(new java.io.PrintWriter(out))
gtlt/PREgt lt/BODYgt lt/HTMLgt
28
La especificación JSP 1.2 Directiva page.
Atributo extends.
  • El atributo extends indica el nombre, totalmente
    cualificado, de la superclase del servlet que
    resulta de compilar la página JSP.
  • lt_at_ page extendspaquete.class gt
  • Sun recomienda que usemos este atributo con
    cautela, ya puede limitar la habilidad del motor
    del JSP.

29
La especificación JSP 1.2 Directiva include.
  • La directiva include nos permite incluir ficheros
    en el momento en que la página JSP es compilada a
    un servlet. La directiva include tiene la forma
  • lt_at_ include filerelativeURL gt
  • Observar que la directiva include incluye el
    fichero en el momento de la compilación. Por
    tanto, si la página incluida cambia después de la
    compilación, los cambios no se verán reflejados
    en la página actual hasta que se vuelva a
    compilar.

30
La especificación JSP 1.2 Ejemplo 1 Directiva
include.
Fichero Velocidad.jsp
lthtmlgt ltheadgt lttitlegtEjemplo de un
includelt/titlegt lt/headgt ltbody
bgcolor"white"gt ltfont color"blue"gt
Fecha y hora actual lt_at_ include fileDate.jsp"
gt lt/fontgt lt/bodygt lt/htmlgt
Fichero Date.jsp
lt_at_ page import"java.util." gt lt (new Date()
).toLocaleString() gt
31
La especificación JSP 1.2 Directiva taglib.
  • Gracias a la directiva taglib podemos definir
    nuestros propios tags JSP.
  • A un conjunto de tags JSP lo llamaremos librería
    de tags.
  • Para definir un tag necesitamos definir 4
    componentes
  • Una clase que defina el comportamiento del tag.
  • Un fichero TLD (Tag library descriptor) para
    hacer visible la clase en el servidor.
  • Un fichero web.xml para hacer visible el tag en
    el servidor.
  • Un fichero JSP que use el tag

32
Objetos Implícitos
33
La especificación JSP 1.2 Objetos implícitos en
una JSP.
  • Para simplificar el código en las expresiones y
    scriplets JSP, tenemos 9 variables definidas
    automáticamente
  • request.
  • response.
  • out.
  • session.
  • application.
  • config.
  • pageContext.
  • page.
  • exception
  • Estas variables reciben el nombre de Objetos
    implícitos en una JSP.

34
La especificación JSP 1.2 Objetos implícitos en
una JSP.
  • request
  • Este es el objeto de la clase HttpServletRequest
    asociado con la petición, y nos permite mirar los
    parámetros de la petición (mediante el método
    getParameter), el tipo de petición (GET, POST,
    HEAD, etc.), y las cabeceras HTTP entrantes
    (cookies, referer, etc.). Estrictamente hablando,
    se permite que la petición sea una subclase de
    ServletRequest distinta de HttpServletRequest, si
    el protocolo de la petición es distinto del HTTP,
    aunque esto casi nunca se lleva a la práctica.
  • response
  • Este es el objeto de la clase HttpServletResponse
    asociado con la respuesta al cliente. Observa
    que, como el stream de salida (ver out más abajo)
    tiene un buffer, es legal seleccionar los códigos
    de estado y cabeceras de respuesta, aunque no
    está permitido en los Servlets normales una vez
    que la salida ha sido enviada al cliente.

35
La especificación JSP 1.2 Objetos implícitos en
una JSP.
  • out
  • Este es el PrintWriter usado para envíar la
    salida al cliente. Sin embargo, para poder hacer
    útil el objeto response (ver punto anterior),
    esta es una versión con buffer de PrintWriter
    llamada JspWriter. Podemos ajustar el tamaño del
    buffer, o incluso desactivar el buffer, usando el
    atributo buffer de la directiva page. out 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
    explícitamente a out.
  • session
  • Este es el objeto de la clase HttpSession
    asociado con la petición. Las sesiones se crean
    automáticamente. Por esto esta variable se une
    incluso si no hubiera una sesión de referencia
    entrante. Como veremos, la única excepción es
    usar el atributo session de la directiva page
    para desactivar las sesiones, en cuyo caso los
    intentos de referenciar la variable session
    causarán un error en el momento de traducir la
    página JSP a un servlet.

36
La especificación JSP 1.2 Objetos implícitos en
una JSP.
  • application
  • Es el objeto de la clase ServletContext obtenido
    mediante
  • getServletConfig().getContext()
  • config
  • Es el objeto de la clase ServletConfig para la
    página actual.
  • pageContext
  • Es el objeto de la clase PageContext. Este objeto
    es usado por el motor de Servlets para
    administrar características como páginas de error
    y los parámetros para hacer include o forward de
    páginas.
  • exception
  • Es un objeto de la clase Throwable. Solo se crea
    en el caso en el que usemos la directiva
  • lt_at_page ErrorPagetruegt

37
JavaBeans y JSP
38
La especificación JSP 1.2 JavaBeans y JSPs.
  • Las acciones que restan hacen referencia a la
    reutilización de componentes JavaBeans.
  • Características de un JavaBean
  • Una clase Bean deber ser serializable, y por lo
    tanto, debe tener un constructor vacío. Este
    constructor es el que será llamado cuando una JSP
    cree el Bean.
  • Una clase Bean no debería tener variables de
    instancia públicas.
  • En la clase Bean tienen que aparecer métodos
    getXxx/setXxx para establecer u obtener los
    valores de sus propiedades.

39
La especificación JSP 1.2 Acción useBean.
  • La acción ltjspuseBeangt nos permite localizar o
    instanciar un JavaBean en la página JSP. La
    sintaxis más simple para especificar que se
    debería usar un Bean es
  • ltjspuseBean id"nombre" class"paquete.clase" /gt
  • Con esto conseguimos localizar o instanciar un
    objeto, de la clase especificada por class, y
    enlazarlo con una variable, con el nombre
    especificado en id.
  • También se puede especificar un atributo scope
    que hace que el bean se asocie con más de una
    página. En este caso, es útil obtener referencias
    a los beans existentes, y la acción jspuseBean
    especifica que se instanciará un nuevo objeto si
    no existe uno con el mismo nombre y ámbito.

40
La especificación JSP 1.2 Acción useBean.
  • La sintaxis completa de la acción ltjspuseBeangt
    es
  • ltjspuseBean idnombreDeInstanciaDelBean"    
  • scope"pagerequestsessionapplication"
  • class"paquete.clase" type"paquete.clase"
  • beanName"paquete.clase expression "
          
  • type"paquete.clase"    
  • type"paquete.clase"
  • /gt gt otros elementos
  • lt/jspuseBeangt

41
La especificación JSP 1.2 Acción useBean.
Atributos.
  • El atributo id es el nombre de la variable que
    identifica al bean en un determinado ámbito
    (page, request, session, application).
  • El atributo scope"pagerequestsessionapplicatio
    n" determina el ámbito en el que el bean existe.
  • page El bean solo esta disponible para la página
    actual (valor por defecto).
  • request El bean solo esta disponible para la
    petición actual del cliente.
  • session El bean esta disponible para todas las
    páginas durante el tiempo de vida de la sesión.
  • application El bean esta disponible para todas
    las páginas que comparten el mismo ServletContext.

42
La especificación JSP 1.2 Acción useBean.
Atributos.
  • El atributo class nos dice el nombre de la clase
    del bean que se instancia. La clase no debe ser
    abstracta y debe tener un constructor vacío.
  • El atributo type hace que se instancie el bean
    con un tipo diferente al que se crea. El valor de
    type debe ser el nombre de una superclase del
    bean o el nombre de un interface que implemente
    la clase del bean.
  • Si usamos Type sin class o beanName el bean no
    se instancia
  • El atributo beanName da el nombre del bean, como
    lo suministraríamos en el método instantiate de
    Beans. Esta permitido suministrar un type y un
    beanName, y omitir el atributo class.

43
La especificación JSP 1.2 Acción setProperty.
  • Usamos jspsetProperty para establecer los
    valores de las propiedades de los beans que se
    han referenciado anteriormente con la acción
    jspuseBean. Además valor de id en jspuseBean
    debe coincidir con el valor de name en
    jspsetProperty.
  • La sintaxis completa de la acción es
  • ltjspsetProperty name"nombreDeInstanciaDelBean
    "
  •    
  • property""
  • propertynombrePropiedadparamnombreParametr
    o"
  • propertynombrePropiedad
  • value"stringLiteral expresion "
  • /gt

44
La especificación JSP 1.2 Acción setProperty.
Atributos.
  • El atributo name designa el bean cuya propiedad
    va a ser establecida. El elemento jspuseBean
    debe aparecer antes del elemento jspsetProperty.
  • El atributo property almacena todos los
    valores de los parámetros de la petición en
    propiedades del bean. Para ello, los nombre de
    las propiedades del bean deben coincidir con los
    nombre de los parámetros de la petición.
  • Si un parámetro de la request es null o esta
    vacío, la propiedad equivalente no se establece a
    ningún valor.
  • Si el bean tiene una propiedad que no corresponde
    con ninguno parámetro de la petición, la
    propiedad no se establece a ningún valor.

45
La especificación JSP 1.2 Acción setProperty.
Atributos.
  • propertynombrePropiedad paramnombreParametro
    "
  • Con estos atributos podemos establecer una
    propiedad del bean con uno de los parámetros de
    la request.
  • Si los valores de property y param coinciden,
    podemos omitir el atributo param.
  • Si el parámetro de la request tiene un valor
    vacío o null, el valor de la propiedad del bean
    equivalente no se establece.
  • propertynombrePropiedad
  • value"stringLiteral expresion "
  • Con este atributo podemos establecer la
    propiedad de un bean con un valor específico.
  • Si el valor es de tipo String, se convertirá al
    tipo de la propiedad del bean siguiendo las
    normal de la tabla mostrada abajo.
  • Si el valor es una expresión, el tipo de la
    expresión debe coincidir el tipo de la propiedad
    del bean.

46
La especificación JSP 1.2 Acción getProperty.
  • La acción jspgetProperty obtiene el valor de una
    propiedad de un bean, usando el método getter del
    bean, e inserta su valor en la respuesta.
  • Antes de usar esta acción debe aparecer una
    acción jspuseBean para instanciar o localizar el
    bean.
  • La sintaxis completa de la acción es
  • ltjspgetProperty name" nombreDeInstanciaDelBean"
  • property" nombrePropiedad " /gt

47
La especificación JSP 1.2 Acción getProperty.
Atributos.
  • El atributo name designa el bean cuya propiedad
    va a ser seleccionada. El elemento jspuseBean
    debe aparecer antes del elemento jspsetProperty
    y el valor de id en jspuseBean debe coincidir
    con el valor de name en jspsetProperty.
  • El atributo property indica el nombre de la
    propiedad del bean que queremos obtener.
  • Si al obtener el valor de la propiedad resulta
    que es null, se lanza una excepción de tipo
    NullPointerException.

48
La especificación JSP 1.2 Ejemplo 1 StringBean.
49
La especificación JSP 1.2 Ejemplo 1 StringBean.
Fichero StringBean.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gtltHTMLgt ltHEADgt
ltTITLEgtEjemplo 1 StringBeanlt/TITLEgt lt/HEADgt
ltBODYgt ltjspuseBean id"stringBean"
classservletsyjsps.StringBean" /gt ltOLgt
ltLIgtValor inicial (getProperty)
ltIgtltjspgetProperty name"stringBean"
property"mensaje" /gtlt/Igt ltLIgtValor inicial
(Expresion JSP) ltIgtlt
stringBean.getMensaje() gtlt/Igt
ltLIgtltjspsetProperty namestringBean
propertymensaje
valueValor actualizado con setProperty /gt
Valor después de establecer la propiedad con
setProperty ltIgtltjspgetProperty
name"stringBean" property"mensaje" /gtlt/Igt
lt/OLgt lt/BODYgtlt/HTMLgt
50
La especificación JSP 1.2 Ejemplo 2 SaleEntry.
Fichero SaleEntry.java
package servletsyjspspublic class SaleEntry
private String itemID desconocido" private
double discountCode 1.0 private int numItems
0 public String getItemID()
return(itemID) public void setItemID(String
itemID) if (itemID ! null)
this.itemID itemID else
this.itemID desconocido public
double getDiscountCode() return(discountCode)
public void setDiscountCode(double
discountCode)this.discountCode discountCode
51
La especificación JSP 1.2 Ejemplo 2 SaleEntry.
Fichero SaleEntry.java
public int getNumItems() return(numItems)
public void setNumItems(int numItems)
this.numItems numItems //reemplazarlo
por una busque real en BD. public double
getItemCost() double cost if
(itemID.equals("a1234")) cost
12.99getDiscountCode() else cost
-9999 return(roundToPennies(cost))
private double roundToPennies(double
cost) return(Math.floor(cost100)/100.0)
public double getTotalCost() return(getItemCost()
getNumItems())
52
La especificación JSP 1.2 Ejemplo 2 SaleEntry1.
Fichero SaleEntry1.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gtltHTMLgt ltHEADgt
ltTITLEgtEjemplo 2 SaleEntry2lt/TITLEgt
lt/HEADgtltjspuseBean identry
classservletsyjsps.SaleEntry
/gt ltjspsetProperty nameentry
propertyitemID value'ltrequest.getParamet
er(itemID) gt' /gtltint numItemsOrdered
1try numItemsOrdered
Integer.parseInt(request.getParameter(numItems))
catch(NumberFormatException nfe)
gt ltjspsetProperty nameentry
propertynumItems valuelt
numItemsOrdered gt /gt
53
La especificación JSP 1.2 Ejemplo 2 SaleEntry1
(continuación).
Fichero SaleEntry1.jsp
lt double discountCode 1.0try String
discountString request.getParameter(discountCod
e) discountCode Double.valueOf(discountStrin
g).doubleValue() catch(NumberFormatException
nfe) gt ltjspsetProperty nameentry
propertydiscountCode valuelt discountCode
gt /gtltBRgtltTABLE ALIGN"CENTER" BORDER1gtltTR
CLASS"COLORED"gt ltTHgtItem IDltTHgtUnit
PriceltTHgtNumber OrderedltTHgtTotal PriceltTR
ALIGN"RIGHT"gt ltTDgtltjspgetProperty
name"entry" property"itemID"/gt
ltTDgtltjspgetProperty name"entry"
property"itemCost" /gt ltTDgtltjspgetProperty
name"entry" property"numItems" /gt
ltTDgtltjspgetProperty name"entry"
property"totalCost" /gtlt/TABLEgt
54
La especificación JSP 1.2 Ejemplo 2 SaleEntry2.
Fichero SaleEntry2.jsp
lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN"gt ltHTMLgt ltHEADgt
ltTITLEgtEjemplo2 SaleEntry2lt/TITLEgt lt/HEADgt
ltBODYgt ltjspuseBean id"entry"
class"servletsyjsps.SaleEntry" /gt
ltjspsetProperty name"entry" property"" /gt
ltBRgt ltTABLE ALIGN"CENTER" BORDER1gt
ltTR CLASS"COLORED"gt ltTHgtItem IDltTHgtUnit
PriceltTHgtNumber OrderedltTHgtTotal Price ltTR
ALIGN"RIGHT"gt ltTDgtltjspgetProperty
name"entry" property"itemID" /gt
ltTDgtltjspgetProperty name"entry"
property"itemCost" /gt ltTDgtltjspgetProperty
name"entry" property"numItems" /gt
ltTDgtltjspgetProperty name"entry"
property"totalCost" /gt lt/TABLEgt
lt/BODYgt lt/HTMLgt
55
Librería de etiquetas Taglibs
56
La especificación JSP 1.2 Directiva taglib.
  • Gracias a la directiva taglib podemos definir
    nuestros propios tags JSP.
  • A un conjunto de tags JSP lo llamaremos librería
    de tags.
  • Para definir un tag necesitamos definir 4
    componentes
  • Una clase que defina el comportamiento del tag.
  • Un fichero TLD (Tag library descriptor) para
    hacer visible la clase en el servidor.
  • Un fichero web.xml para hacer visible el tag en
    el servidor.
  • Un fichero JSP que use el tag

57
La especificación JSP 1.2 Directiva taglib.
Sintaxis.
  • La sintaxis completa de la directiva taglib es
  • lt_at_ taglib uri"URIForLibrary" prefix"tagPrefix"
    gt
  • El atributo uri define donde se localiza el
    fichero TLD, y puede ser un URL, un URN o un PATH
    absoluto o relativo.
  • Si la URI es una URL, entonces el TLD es
    localizado por medio del mapping definido dentro
    del fichero web.xml.
  • Si la URI es un path, entonces es interpretado
    como un acceso relativo a la raíz de la
    aplicación y debería resolverse en un fichero TLD
    directamente, o un fichero .jar que contiene el
    fichero TLD.

58
La especificación JSP 1.2 Ejemplo Hola Mundo.
Fichero Hola.jsp
ltHTMLgt ltHEADgt lt_at_ taglib uriHola.tld
prefixtest gt ltTITLEgtlttestHolaMundo
/gtlt/TITLEgt ltBODYgt ltH1gt lttestHolaMundo
/gtlt/H1gt lt/BODYgt lt/HTMLgt
59
La especificación JSP 1.2 Ejemplo Hola Mundo.
Fichero Hola.tld
lt?xml version"1.0" encoding"ISO-8859-1"
?gt lt!DOCTYPE taglib PUBLIC"-//Sun Microsystems,
Inc.//DTD JSP Tag Library 1.1//EN"
http//java.sun.com/j2ee/dtds/web-jsptaglib_1_1.d
td"gt lttaglibgt ltjspversiongt1.1lt/jspversiongt
lttlibversiongt1.0lt/tlibversiongt
ltshortnamegtsimpleholalt/shortnamegt lturngtlt/urngt
ltinfogtMi primera librería de
tagslt/infogt lttaggt ltnamegtHolaMundolt/namegt
lttagclassgtHolalt/tagclassgt ltbody-contentgtempty
lt/body-contentgt ltinfogtMi Hola Mundo
Taglt/infogt lt/taggt lt/taglibgt
60
La especificación JSP 1.2 Ejemplo Hola Mundo.
Fichero web.xml
lt?xml version"1.0" encoding"ISO-8859-1"
?gt lt!DOCTYPE taglib PUBLIC"-//Sun Microsystems,
Inc.//DTD Web Application 2.2//EN"
http//java.sun.com/j2ee/dtds/web-app_2_2.dtd"gt
ltweb-appgt ltdisplay-namegt Aplicación Hola Mundo
lt/ display-namegt ltdescriptiongt Librerías de tags
de la aplicación lt/descriptiongt lttaglibgt lttag
lib-urigt/Hola.tld lt/taglib-urigt lttaglib-location
gt/WEB-INF/Hola.tld lt/taglib-locationgt lt/taglibgt
lt/web-appgt
61
La especificación JSP 1.2 Ejemplo Hola Mundo.
Fichero Hola.java
import javax.servlet.jsp. import
javax.servlet.jsp.tagext. import java.io.
public class Hola extends TagSupport
public int doStartTag() try JspWriter
out pageContext.getOut() out.print(Hola
Mundo) catch (IOException ioe)
System.out.println(Error en Hola
Mundo) return (SKIP_BODY)
Write a Comment
User Comments (0)
About PowerShow.com