Está en la página 1de 39

Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

F. Aplicaciones de Internet Enriquecidas

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 1/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tabla de contenidos
l Precedentes
l Características
l Tecnología
l Caso de estudio: Ajax en JSF

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 2/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precedentes
l Aplicaciones web
l Ejecutadas en el lado del cliente con fácil
despliegue
- Debido a una interacción limitada (HTML)
l Resuelta parcialmente con JavaScript
- Carga y descarga de páginas continua
l Envío al servidor, procesado y vuelta para renderizar
- Soluciones:
l Aplicaciones interactivas alojadas en el lado del servidor
y descargadas bajo demanda por el cliente

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 3/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precendentes
l Ejecutada en contextos especiales:
l Plug-ins
- Ej: Flash
l Máquinas virtuales
- Ej: applets
l Intepretadas por motores
- Ej: JavaScript

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 4/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precedentes
l Applets
l Aplicaciones “pequeñas” a las que se accede en un
servidor web mediante un navegador.
- Se transmiten a través de HTTP, y se instalan y ejecutan
automáticamente como parte de un documento HTML
- Acceso limitados a los recursos por problemas de seguridad.
l La seguridad implementada por defecto es:
- No accesos (R y/o W) a disco del cliente.
- No acceso a otro IP que no sea el del proveedor del applet desde el cliente.

l Es posible firmar los applets para dar permisos


l Ejemplo
l "Demos" disponibles en la propia instalación del JDK
- %JAVA_HOME%\demo\applet.html

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 5/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precedentes

Documento
HTML
Código Applet en el
JAVA Navegador
l Clases Java.
l Heredan de la clase java.applet.Applet o javax.swing.JApplet
l AWT (abstract windows toolkit) o Swing (clases correspondientes a GUI)
l soporte adicional a las funciones gráficas de los Applets

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 6/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precendentes
<html>
<head>
<title>Applets Java</title>
</head>
<body>
<applet
code=“AlgunApplet.class" width="200" height="300">
Su browser no entiende Java.
</applet>
...
</body>
</html>

Atributos básicos de la <applet> :


• code = Nombre de la clase que extiende de Applet o JApplet
• width, height = Anchura y altura del applet en la página html

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 7/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precedentes
l Ejemplo: Holamundo HolaMundo.html
<html>
<head>
<title>Applets Java</title>
</head>
<body>
<applet
code= "AppletHolaMundo.class" width="200" height="300">
Su browser no entiende Java.
</applet>
</body>
</html>
AppletHolaMundo.java
import java.applet.*;
import java.awt.*;

public class AppletHolaMundo extends Applet {

public void paint(Graphics g){


g.drawString("Hola mundo.",20,20);
}
}
Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 8/39
Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precedentes
l Ciclo de vida
l El navegador toma el control (contexto)

l Invoca en secuencia a una serie de métodos.

Leer peticiones de usuario


hasta que pida descargar la página

[Vuelve a la página] [Redibujar] [Se abandona la página]

init start paint stop destroy


[Descargar]

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 9/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precendentes
l Flash
l Gráficos vectoriales
l Concepto de escenarios, línea de tiempo, capas y paneles
l Animaciones 2D
- Fotograma a fotograma
- Animación por interpolación: de movimiento o forma
l Incrustación en páginas web
l Ficheros de pequeño tamaño
l Lenguaje de programación ActionScript (basado en
ECMAScript)
- Interacción utilizando LPOO
l Herramientas de edición propietarias y plugins necesarios

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 10/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precedentes
l Embebido en página HTML Plugin a
utilizar
<html>
<body>
Fichero
swf a
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" cargar
codebase="http://download.macromedia.com/pub/shockwave/
cabs/flash/swflash.cab#version=6,0,40,0" width="468" height="60"
id="mymoviename">
<param name="movie" value="example.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="example.swf" quality="high" bgcolor="#ffffff"
width="468" height="60" name="mymoviename" align="" type="application/x-
shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
</object>

</body>
</html>

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 11/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precedentes
l JavaScript
l Contemporáneo a los applets
- Como respuesta a Java
- Con diferente soporte por parte de Microsoft: VBScript
l Lenguaje OO dinámicamente tipado ligado a DOM (modelo de
objetos del documento) - Interpretado
- Con unos "inicios difíciles": distinto comportamiento en cada navegador,
errores en ejecución, se puede deshabilitar en el navegador, etc.
l W3C estandariza DOM

l European Computer Manufacturers Association (ECMA) ratifica

JavaScript como especificación ECMAScript


l Estándares a seguir por los navegadores

- Aparece entre medias DHTML: JavaScript + HTML + CSS + DOM pero


con los problemas inherentes a JavaScript hasta su estandarización
l Creación de efectos gráficos avanzados en el navegador

- Ej: http://www.dynamicdrive.com/

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 12/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precendente
l JavaScript
l Basado en manejadores de eventos
Evento Descripción
onload Después de la carga
onunload Despúes de descargar
onfocus Al seleccionar
onblur Al abandonar la selección
onmouseover Al pasar el ratón por encima
onmouseout Al abandonar el ratón
onclick Al hacer click con el ratón
onmousedown Al pulsar el botón
onmouseup Al liberar el botón
onmousemove Al desplazar el ratón
onkeydown Al pulsar una tecla
onkeyup Al soltar una tecla
onkeypress Al pulsar y soltar repetidamente

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 13/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Precedente
l Ejemplo:
<!DOCTYPE html>
<html>
<head>
<script>
function displayDate()
{
document.getElementById("demo").innerHTML=Date();
}
</script>
</head>
<body>

<h1>Ejemplo JavaScript</h1>
<p id="demo">Texto a reemplazar</p>

<button type="button" onclick="displayDate()">Mostrar


fecha</button>

</body>
</html>
Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 14/39
Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Características
l RIA = Rich Internet Application
l Eliminación de la frontera entre aplicación web y
aplicación de escritorio
- Aplicaciones interactivas
- Con refresco de datos en tiempo real
- No sólo ligado al envío de formularios o clicks sobre
enlaces

l Tomando como elemento fundamental el navegador


web
- Junto con JavaScript y DOM
- Aunque no exclusivamente (MV, plug-ins, etc.)

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 15/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l AJAX - Asynchronous JavaScript + XML
l No es un estándar, es una técnica
l No es una "nueva tecnología"
- Apoyada en un objeto XMLHttpRequest (desde 1999 :0)
l Apoyada (ahora sí) por todos los navegadores
l Puede interactuar con cualquier tecnología de servidor
- PHP, ASP.NET, servlets, CGI, etc.
l Cambio en el paradigma típico de petición/respuesta
- Interacción asíncrona con el servidor
- Sin refrescar la página --> alterando el código de la
página directamente en el cliente (DOM)

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 16/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Anteriormente resuelto con "trampas":
l iframes, frames, frames ocultos, etc.
l Cambio en el modelo

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 17/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Sincrono vs.
asíncrono

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 18/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Creación de un objeto XMLHttpRequest:
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}

l Formato de la respuesta XML o JSON (u otros


formatos...)

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 19/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Petición y recogida

function startRequest() { Asíncrono
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", "simpleResponse.xml", true);
xmlHttp.send(null);
}
Query string
function handleStateChange() {
if (xmlHttp.readyState == 4) {
if( xmlHttp.status == 200) {
Alert("The server replied with: " +
xmlHttp.responseText);
}
}
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="Start Basic Asynchronous
Request"
onclick="startRequest();"/>
</form>
</body>
Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es>
</html> 20/39
Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Métodos estándar en XMLHttpRequest
Método Descripción

abort() Aborta petición actual

getAllResponseHeaders() Retorna todas las parejas clave/valor de las cabeceras de la respuesta HTTP

getResponseHeader("header") Retorna el valor en la cabecera

open("method", "url") Establece la llamada al servidor. Puede ser GET, POST, o PUT. La url puede
ser absoluta o relativa (con tres argumentos opcionales: boolean asynch,
string username, string password).

send(content) Envía la petición al servidor

setRequestHeader("header", Establece el valor en la cabecera. Se debe llama antes a open()


"value")

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 21/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Propiedades estándar
Método Descripción

onreadystatechange Manejador de evento que se dispara a cada cambio de estado, tipicamente una llamada a
función

readyState Estado de la petición. Valores posibles: 0 = no inicializada,


1 = cargando, 2 = cargada, 3 = interactivo, y 4 = completo

responseText Respuesta del servidor como String

responseXML Respuesta del servidor como XML. Parseable como objeto DOM

status Estado HTTP del servidor (200 OK, 404 Not


Found, etc.).

statusText Versión en texto del estado HTTP (OK, Not Found, etc.)

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 22/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l DOM
l Modo común de representar y manipular un documento HTML o XML
l Modelo de Objetos del Documento
- Representación en forma de árbol de los datos y la estructura de una
página
l Utilizando JavaScript y la propiedad id de del elemento HTML
- Navegación en el árbol con propiedades (elementos DOM):
Propiedad/Elemento DOM Descripción
childNodes Devuelve el array de hijos
firstChild Devuelve el primer hijo
lastChild Devuelve el último hijo
nextSibling Devuelve el siguiente hermano
nodeValue Devuelve el nodo actual
parentNode Devuelve el nodo padre
previousSibling Devuelve el hermano previo

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 23/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l DOM
l Navegación con métodos

Propiedad Descripción
getElementById(id) Devuelve el elemento en el documento con id
getElementsByTagName(name) Devuelve el array de elementos hijos que tienen ese
nombre
hasChildNodes() Devuelve true si tiene hijos
getAttribute(name) Devuelve el atributo

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 24/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l DOM
l Edición y modificación del contenido con atributos/métodos
Atributos/Métodos Descripción
document.createElement(tagName) Crea un elemento (HTML)
document.createTextNode(text) Crea un nodo de texto
<element>.appendChild(childNode) Añade un hijo.
<element>.getAttribute(name) Lee o establece el atributo con dicho nombre
<element>.setAttribute(name, value)
<element>.insertBefore(newNode, Inserta el nuevo nodo antes del nodo indicado
targetNode)
<element>.removeAttribute(name) Elimina un atributo
<element>.removeChild(childNode) Elimina un hijo
<element>.replaceChild(newNode, oldNode)Reemplaza un hijo

<element>.hasChildnodes() Consulta si el elemento tiene hijos

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 25/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Procesar la respuesta como texto plano
l Método responseText
- Conectado a la propiedad innerHTML
l Ej: ...
Texto devuelto se conecta en el
function handleStateChange() { componenteHTML
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
Consulta en DOM document.getElementById("results").innerHTML =
xmlHttp.responseText;
}
}
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="Busqueda"
onclick="startRequest();"/>
</form>
l Con algunas limitaciones dependientes del tipo de navegador
<div id="results"></div>
</body>
</html>

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 26/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Procesa la respuesta como XML
l Método responseXML
- Navegación en el documento XML con DOM
l Ej: function listAllStates() {
var xmlDoc = xmlHttp.responseXML;
<?xml version="1.0" encoding="UTF-8"?> var allStates =
<states> xmlDoc.getElementsByTagName("state");
<north> var out = "Todos los Estados";
<state>Minnesota</state>
var currentState = null;
<state>Iowa</state>
<state>North Dakota</state> for(var i = 0; i < allStates.length; i++) {
</north> currentState = allStates[i];
<south> out = out + "\n- " +
<state>Texas</state> currentState.childNodes[0].nodeValue;
<state>Oklahoma</state> }
<state>Louisiana</state>
</south> alert(out);
<east> }
<state>New York</state>
<state>North Carolina</state>
<state>Massachusetts</state>
</east>
<west>
<state>California</state>
<state>Oregon</state>
<state>Nevada</state>
</west>
</states>
Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 27/39
Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l Envío de datos en la
petición AJAX var url = "get_data.php";
var params = "lorem=ipsum&name=binny";
l GET http.open("GET", url+"?"+params, true);
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
- Con pares clave/valor alert(http.responseText);
- Enviada en el método open }
}
l POST: http.send(null);

- Igual pero se envía la


QUERY_STRING var url = "get_data.php";
- Como parte del cuerpo de la var params = "lorem=ipsum&name=binny";
http.open("POST", url, true);
petición, no en la cabecera
// Establecer cabeceras para el envío
- Enviada en el método send http.setRequestHeader("Content-type", "application/x-www-
form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 28/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l JSON - JavaScript Object Notation como alternativa a XML
- Formato de intercambio de datos ligero (basado en { } [ ] y clave:valor)
- Sintaxis muy reducida (ver http://www.json.org/)
l Ej: JSON vs. XML (extraído de http://www.json.org)
<widget>
{"widget": { <debug>on</debug>
"debug": "on", <window title="Sample Konfabulator Widget">
"window": { <name>main_window</name>
"title": "Sample Konfabulator Widget", <width>500</width>
"name": "main_window", <height>500</height>
"width": 500, </window>
"height": 500 <image src="Images/Sun.png" name="sun1">
}, <hOffset>250</hOffset>
"image": { <vOffset>250</vOffset>
"src": "Images/Sun.png", <alignment>center</alignment>
"name": "sun1", </image>
"hOffset": 250, <text data="Click Here" size="36" style="bold">
"vOffset": 250, <name>text1</name>
"alignment": "center" <hOffset>250</hOffset>
}, <vOffset>100</vOffset>
"text": { <alignment>center</alignment>
"data": "Click Here", <onMouseUp>
"size": 36, sun1.opacity = (sun1.opacity / 100) * 90;
"style": "bold", </onMouseUp>
"name": "text1", </text>
"hOffset": 250, </widget>
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) *
90;"
}
Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es>
}} 29/39
Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Tecnología
l JSON
l Soportada en navegadores, creando objetos
JSON
- Ej:
<div id="placeholder"></div>
<script>
var data={
"firstName":"Ray",
"lastName":"Villalobos",
"joined":2012
};
document.getElementById("placeholder").innerHTML=data.firstName+" "+data.lastName+"
"+data.joined;
</script>

l Multitud de soluciones para lenguajes utilizados


en el lado del servidor (y del cliente)
- Ej: Java, paquete org.json (incluido también en
Android)
Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 30/39
Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Caso de estudio
l AJAX en JSF
l Integrando el código JavaScript a la página
generada dinámicamente
l Utilizando las bibliotecas de recursos
- Componentes gráficos JSF con AJAX habilitado
- Usando etiqueta <f:ajax />
l Sin parametrizar, valor por defecto valueChange
- Usando el método JavaScript:
jsf.ajax.request() directamente en el Facelet
l Documentación de la JSF JavaScript API
- https://javaserverfaces.java.net/nonav/docs/2.2/jsdocs/symbols/jsf.ajax.html

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 31/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Caso de estudio
l Atributos en la etiqueta <f:ajax />
Nombre Tipo Descripción
disabled javax.el.ValueExpression evalúa a Boolean Indica si se deber renderizar o no. Por defecto a a false

event javax.el.ValueExpression evalúa a String Identifica el tipo de evento al que se aplica la acción Ajax. Por defecto action para
ActionSource y valueChange para EditableValueHolder. (Nota: cierta
correspondencia con eventos JavaScript pero eliminado on delante)

execute javax.el.ValueExpression evalúa a Object Colección que identifica una lista de componentes (separados por espacio en blanco) a ser
ejecutado en el servidor. Por defecto @this (otros valores @all, @none, @form, ids
separados por espacios o uso de EL como colección de Strings)

immediate javax.el.ValueExpression evalúa a Boolean Indica si la entrada se debe procesar tempranamente en el ciclo de vida.

listener javax.el.MethodExpression Método oyente invocado cuando el AjaxBehaviorEvent salta

onevent javax.el.ValueExpression evalúa a String Nombre de la función JavaScript que maneja el evento de UI

onerror javax.el.ValueExpression evalúa a String Nombre de la función JavaScript que maneja errores.

render javax.el.ValueExpression evalúa a un Object Collection con la lista de componentes a rederizarse en el cliente. Por defecto @none (otros
valores @this, @all, @form, ids separados por espacios o uso de EL como coleccion
de Strings).

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 32/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Caso de estudio
l Atributo/valor
Atributo Valores posibles
event click*, keyup, mouseover, focus, blur.
execute Identificador del componente UI de JSF o bien
@all, @none, @this* o @form

*Valor por defecto

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 33/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Caso de estudio
l Procesado de la respuesta
l Atributo render: especifica secciones a ser
alteradas
- Valores: uno o varios identificadores, o @this,
@all, @none, @form, o una expresión EL
l Agrupación de elementos en la misma acción
<f:ajax event="click" render="@all">
...
<h:commandButton id="Submit">
<f:ajax event="mouseover"/>
</h:commandButton>
...
</f:ajax>

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 34/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Caso de estudio
l Carga directa del código JavaScript en un Facelet
Código JavaScript a incluir (en este caso
biblioteca habitual)
<h:form>
<h:outputScript name="jsf.js" library="javax.faces"
target="head"/>
</h:form>

l Ejecución Renderizado en la cabecera del HTML


l Ej:<h:form>
<h:outputScript name="jsf.js" library="javax.faces"
target="head">
<h:inputText id="inputname" value="#{userBean.name}"/>
<h:outputText id="outputname" value="#{userBean.name}"/>
<h:commandButton id="submit" value="Submit"
onclick="jsf.ajax.request(this, event,
{execute:’inputname’,render:’outputname’});
return false;" />
</h:form>

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 35/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Caso de estudio
l Ej: HolaMundo en JSF con AJAX
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">

<h:body>
<h3>Ejemplo de HolaMundo con JSF y AJAX</h3>

<h:form>
<h:inputText id="name" value="#{helloBean.name}"></h:inputText>
<h:commandButton value="Bienvenido">
<f:ajax execute="name" render="output" />
</h:commandButton>
<h2>
<h:outputText id="output" value="#{helloBean.sayWelcome}"
/>
</h2>
</h:form>
</h:body>
</html>
name, es el componente a ejecutar render, es el componente a
asíncronamente en el lado del renderizar en respuesta
servidor
Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 36/39
Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Caso de estudio
l Otros casos:
l JavaFX de Oracle
- Aplicaciones RIA con lenguaje JavaFXScript
l Competencia de Flash (Apache Flex) y Silverlight
l Silverlight de Microsoft
- Aplicaciones RIA
l Basado en WPF (Windows Presentation Foundation)
con XAML
l Competencia de JavaFX y Flash (Apache Flex)
l HTML 5 con JavaScript como presente y futuro

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 37/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Bibliografía
l Rodriguez de la Fuente, S. Et al. (2003) Programación de
Aplicaciones Web. Editorial Thomson. ISBN: 84-9732-181-2
l M.L.Liu. (2004) Computación Distribuida. Fundamentos y
Aplicaciones. Ed. Pearson Addison-Wesley, 1ª edición. ISBN: 84-
7829-066-4
l Odell, D. (2009) Pro JavaScript RIA Techniques. Apress
l Aslesson, R. & Schutta,N.T. (2006) Foundations of Ajax. Apress.

Universidad de Burgos - Francisco J. Rodríguez <fjrdiaz@ubu.es> 38/39


Arquitectura y Servicios de Internet – Aplicaciones de Internet Enriquecidas

Licencia
•Autor: Raúl Marticorena Sánchez
•Área de Lenguajes y Sistemas Informáticos
•Departamento de Ingeniería Civil
•Escuela Politécnica Superior
•UNIVERSIDAD DE BURGOS

•2013

Este obra está bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported.
No se permite un uso comercial de esta obra ni de las posibles obras derivadas, la distribución de las cuales se
debe
hacer con una licencia igual a la que regula esta obra original

Licencia disponible en http://creativecommons.org/licenses/by-nc-sa/3.0/

También podría gustarte