PDF de programación - JPS(I)

Imágen de pdf JPS(I)

JPS(I)gráfica de visualizaciones

Publicado el 17 de Septiembre del 2020
402 visualizaciones desde el 17 de Septiembre del 2020
951,3 KB
25 paginas
Creado hace 12a (09/11/2011)
JSP (I)

Aplicaciones Distribuidas

Contenido















Limitación Modelo Servlets

Definición.

Elementos de Script

Expresiones y declaraciones.

Directivas.

JavaBeans.

Otros aspectos de interés





Etiquetas de Extensión

Estructura

• Modelo Básico de Programación.







Ejemplo.

Librería de etiquetas

Uso.

• Modelo Extendido de Programación.

Iteraciones.

Anidamiento.

Etiquetas: conclusiones







2

Limitación Modelo

Servlets

• Motivación:

• Las aplicaciones web se construyen sin conocer al usuario final.

•  Cambios frecuentes

• Problema:

• La generación del interfaz HTML se realiza utilizando código

Java  out.println(“...”)

• No podemos usar editores HTML.

• Costoso tener diseñadores gráficos con conocimientos Java.

• Consecuencia:

• El mantenimiento (evolución) de la aplicación está limitado.

3

Limitación Modelo

Servlets  JSP

• Objetivo:

• Separación roles: Diseñador Gráfico y Desarrollador.

• Nuevo modelo de desarrollo de contenidos dinámicos en el que

la lógica de la aplicación se encapsule en componentes
portables y reutilizables.

• Solución: JSP (Java Server Pages)

• “Una página HTML normal que puede incluir scripts para

generar HTML dinámicamente”.

• En general, puede generar cualquier tipo de contenido dinámico:

XML, WML, etc.

• Código script, por defecto Java (scriptlets).

4

Ciclo de vida

• No representan una nueva tecnología:

• Semánticamente equivalen a los servlets.

• Sólo facilitan el desarrollo y mantenimiento.

• Ciclo de vida:

• El contenedor de servlets traduce la página JSP a su

equivalente servlet la primera vez que se accede.

• El servlet es compilado y cargado en memoria siguiendo

su ciclo de vida convencional.

• Si la página es modificada, el contenedor detecta el

cambio y vuelve a repetir el proceso.

•  Ventaja: no se hace necesario reiniciar el servidor

Web.

5

Ejemplo

<html>
<body>

<jsp:useBean id="cliente" class="Cliente" scope="session">

<form method="POST" action=“clienteActualizacion.ctrl">

<p><b> Nombre: <input type="text" name="nombre" size="39"

value="<jsp:getProperty name=\"cliente\" property=\"nombre\“/>">

NIF:<input type="text" name="nif" size="12"

value="<jsp:getProperty name=\"cliente\" property=\"nif\“/>">

...

</form>

</body>
</html>

6

Elementos de Script



Incluir código Java:

• <% ... %>

• Objetos implícitos:



request, response, out, session, application, config, ...

• Durante la traducción el código se inserta en el mismo orden

•  Podemos usar declaraciones anteriores.

• No es necesario que el código contenga sentencias completas en

Java:

<% if (session.getAttribute(“accesos”) == null) { %>

<B>Bienvenido a nuestra web</B>

<% } %>

7

Expresiones y
Declaraciones

• Expresiones:

• <%= ... %>

• Evalúa la expresión en tiempo de ejecución, la convierte a String

y la saca por la salida.

• Equivale a: out.println(“...”);

• Ejemplos:

• <%= request.getParameter(“Nombre”) %>

• <%= i++ %>

• Declaraciones:

• <%! ... %>

• Declarar métodos y atributos:

• <%! private int numeroAccesos; %>

8

Directivas

• <%@ ... %>

• Afectan a la estructura de la clase del Servlet.

• Directiva page: <%@ page ...



import: paquetes y clases separados por comas
• <%@ page import=“java.util.*” %>

• contentType:

• <%@ page contentType=“text/xml” %>

• errorPage: página que trata las excepciones no capturadas

• <%@ page errorPage=“error.jsp” %>
isErrorPage: indica si actúa como página de error
• <%@ page isErrorPage=“true” %>
...





• Directiva include: <%@ include file=“URL” %>



Incluye código JSP en el momento de la traducción.

9

JavaBeans

• Componentes Java reutilizables.





Se utilizan para facilitar el acceso a los objetos Java.

Están caracterizados por un conjunto de propiedades y de eventos que
disparan.

• Ejemplo: componentes AWT/Swing en programación gráfica.



Se definen siguiendo unas guías de estilo:

• En JSP sólo nos interesan las propiedades.

• Declaración:

• Clase serializable con un constructor público sin argumentos.

• Un propiedad ab tendrá métodos de acceso y/o modificación



public Tipo getAb() y public void setAb(Tipo valor)

• Multivaluada: public Tipo[] getAb() y public void setAb(Tipo[])

• Tipo: tipos básicos o String.

10

JavaBeans - Declaración

• Manejamos los javabeans haciendo uso de acciones estándares

JSP.

• Declaración:

• <jsp:useBean id=“carro” class=“portal.CarroCompra”

scope=“session” />

portal.CarroCompra carro = new portal.CarroCompra();
session.setAttribute(“carro”, carro);

• scope: indica dónde se guarda el objeto

• page: equivalente a una variable local



request

• session

• application

11

JavaBeans - Propiedades

• Establecimiento de propiedades:

• <jsp:setProperty name=“carro” property=“...” value= “...” />

• name ha de coincidir con el id de la declaración.

• Sin value: toma el valor de un parámetro de la petición cuyo

nombre sea igual a la propiedad.

• property=“*”: establece las propiedades del bean cuyo nombre

coincida con algún parámetro de la petición.

• Para asignar un parámetro concreto: param=“...”

• Recuperación de propiedades.

• <jsp:getProperty name=“carro” property=“...” />

• Recupera la propiedad y la inserta en la salida.

12

Otros aspectos de interés



Acción forward:

• <jsp:forward page=“URL” />

• Equivalente al forward de RequestDispatcher.



Acción include:

<jsp:include page=“URL” flush=“true”>

<jsp:param name=“login” value=“Marcos” />

</jsp:include>

• Equivalente al include de RequestDispatcher.



En cualquier caso, la URL puede ser un valor calculado mediante una
expresión.

• Comentarios:

• <%-- comentario --%>

13

Etiquetas de Extensión

• Alternativa a los JavaBeans para encapsular la lógica de negocio.

• Limitaciones JavaBeans:

• Ejecución de métodos: uso de scriptlets.

• Dificultad para acceder al contexto de la página (petición,

sesión, etc.)

• Objetivos:

• Disponer del concepto de “componente” para la edición de

páginas Web  Disponible en una paleta

• Ejecutar la lógica de negocio de un modo declarativo.

• Ejemplo:

• <jsp:forward page=“error.jsp” />

14

Estructura



Otro ejemplo:











<ad:enlace URL=“index.jsp” texto=“Inicio” />

Una etiqueta se identifica por un prefijo (“ad”) y por un sufijo (“enlace”).

Puede tener parámetros al estilo XML (“URL”).

Las etiquetas pueden tener cuerpo (body).

También puede tener etiquetas anidadas.

• Ejemplo: “jsp:param” en la etiqueta “jsp:include”.

Las etiquetas se organizan en librerías (TagLib)

• Contiene información sobre las etiquetas.

• Necesaria para el contenedor y las herramientas de edición.

15

Modelo de Programación: Interface Tag



int doStartTag()

• EVAL_BODY_INCLUDE

• SKIP_BODY



int doEndTag()

• EVAL_PAGE

• SKIP_PAGE





void setParent(Tag)

• Tag getParent()

PageContext:

• Acceso a los objetos implícitos

• getOut(), getRequest(), …

• Clase de apoyo: TagSupport

16

j:Pagina JSP

t : Tag

setPageContext(PageContext)

setParent(Tag)

setAtributo1( )

setAtributo2( )

doStartTag()

doEndTag( )

release( )

Ejemplo de Etiqueta

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class EnlaceTag extends TagSupport
{

...
public void setURL(String url) {

this.url = url;

}
...
public int doEndTag() throws JspTagException {

try {

HttpServletResponse respuesta =

(HttpServletResponse) pageContext.getResponse();

pageContext.getOut().write("<a href=\""

+ respuesta.encodeURL(url) + "\">" + texto + "</a>");

} catch (java.io.IOException e) {

throw new JspTagException(e.getMessage());

}
return EVAL_PAGE;

}

}

17

Librería de Etiquetas

<taglib>

<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>ad</shortname>
<info> Libreria de etiquetas de AD</info>
<tag>

<name>enlace</name>
<tagclass>EnlaceTag</tagclass>
<bodycontent>JSP</bodycontent>
<info>Crea un enlace con reescritura de URL</info>
<attribute>

<name>URL</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>

</attribute>
<attribute>

<name>texto</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>
...

18

Uso de una etiqueta

• Para utilizar una librería hay que declararla en el descriptor

de la aplicación (web.xml):

<taglib>

<taglib-uri>/ad</taglib-uri>
<taglib-location>/WEB-INF/tlds/ad.tld</taglib-location>

</taglib>

• Para hacer uso de ella en la página JSP usamos una

directiva:

<%@ taglib uri=”/ad" prefix=“ad" %>

19

Cuerpo de la Etiqueta

• Motivación: Iteraciones

• Ejemplo: Listar Usuarios registrados

<ad:listaUsuarios usuarios="<%= usuarios %>“ >

<b><%= identificador %> <%= nombre %></b>

</aadd:listaUsuarios>

• El manejador debe controlar:

• El número de veces que se evaluará el cuerpo.

• Las nuevas variables que ofrece a la página.

• Extensión del modelo de programación:

• Interface BodyTag

• Clase de apoyo: BodyTagSupport

20

Modelo de Programación – Interface

BodyTag

• BodyContent:

• Acceso al cuerpo de la etiqueta.

doStartTag()

j:Página JSP

t :BodyTag

pc : PageContext

• getString()

• getEnclosingWriter()

• clearBody()



void doInitBody()



int doAfterBody()

• EVAL_BODY_TAG

• SKIP_BODY

pushBody()

setBodyContent(BodyContent)

doInitBody( )

doAfterBody( )

doAfterBody( )

popBody( )

doEndTag( )

Iteración

21

Ejemplo de Iteración

public int doAfterBody() throws JspTagException {

BodyContent bodyContent = getBodyContent();
if (bodyContent != null) {

try {

bodyContent.getEnclosingWriter().print(bodyContent.getString());
bodyContent.clearBody();

} catch (Exception e) {

throw new JspTagException(e.getMessage());

}

}
if (it.hasNext()) {

Cliente c = (Cliente) it.next();
pageContext.setAttribute("identificador", c.getUsuario());
pageContext.setAttribute("nombre", c.getNombre());
return EVAL_BODY_TAG;

} else

return SKIP_BODY;

}

22

Declaración de Variables

• Si una etiqueta ofrece objetos a la página, debe

declarar
  • Links de descarga
http://lwp-l.com/pdf18222

Comentarios de: JPS(I) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad