SlideShare una empresa de Scribd logo
Aplicaciones AJAX Presentado por :  Mayer Horna García  Jonathan Lara Vasquez 15 de Octubre, 2008 [email_address] COREIS - Huancayo [email_address]
Agenda Preparar el entorno de desarrollo web bajo IDE Eclipse, levantar los proyectos del taller, instalar el Spket IDE, instalar el firebug Comparativa entre aplicaciones de escritorio, web y web + ajax AJAX – Conceptos Javascript XML JSON Anatomía de una aplicación AJAX El objeto XMLHTTPRequest Conversación con el servidor Trabajar con datos devueltos como XML Trabajar con datos devueltos como JSON Frameworks AJAX Uso de ExtJS
Comportamiento de una aplicación de escritorio BD BD SELECT * FROM Provincia  WHERE departamento_id = 2 Servidor Cliente departamentoId=2 request MantenimientoCalles_jsp.html <<build>> MantenimientoCalles.jsp response Comportamiento de una aplicación de web departamentoId=2 SELECT * FROM Distrito WHERE provincia_id = 12  SELECT * FROM Calle WHERE distrito_id = 23 provinciaId=12 distritoId=23 SELECT * FROM Provincia  WHERE departamento_id = 2 distritoId=23 request MantenimientoCalles_jsp.html <<build>> MantenimientoCalles.jsp SELECT * FROM Calle WHERE distrito_id = 23 response SELECT * FROM Provincia  WHERE departamento_id = 2 i1.1 provincia distrito calle
Comportamiento de una aplicación Web + AJAX BD Servidor Cliente request response SELECT * FROM Provincia  WHERE departamento_id = 2 Motor AJAX Objeto  XMLHttpRequest departamentoId=2 new XMLHttpRequest() request response SELECT * FROM Calle WHERE distrito_id = 23 distritoId=23 new XMLHttpRequest() i1.2 i2 <?xml version=\&quot;1.0\&quot; ?> <provincias> <provincia> Huara </provincia> <provincia> Trujillo </provincia> <provincia> Chimbote </provincia> </provincias> provincias.xml <?xml version=\&quot;1.0\&quot; ?> <provincias> <provincia> Huara </provincia> <provincia> Trujillo </provincia> <provincia> Chimbote </provincia> </provincias> distrito.xml
AJAX “Asynchronous Javascript y XML” (JavaScript asíncrono y XML)  Es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications).  Implica el uso coordinado de distintas tecnologías que en conjunto permiten una mayor rapidez y eficacia para las aplicaciones basadas en la web. Estas aplicaciones se ejecutan en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la velocidad y usabilidad en las aplicaciones.
Javascript Fue desarrollado originalmente por Brendan Eich de Netscape con el nombre de Mocha, más tarde renombrado a LiveScript, y finalmente a JavaScript. El cambio de nombre de LiveScript a JavaScript coincidió aproximadamente con el momento en que Netscape agregó soporte para la tecnología Java en su navegador web Netscape Navigator. JavaScript fue presentado y desarrollado en diciembre de 1995. La denominación ha causado confusión, dando la impresión de que el lenguaje es un prolongación de Java, y se ha caracterizado por muchos como una estrategia de marketing de Netscape.  JavaScript  es un lenguaje de programación interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java.  No es un lenguaje de  Programación Orientada a Objetos  propiamente dicho como  Java , pero sí es un lenguaje de programación basado en  objetos .
XML E x tensible  M arkup  L anguage  (lenguaje de marcas ampliable),  XML no ha nacido sólo para su aplicación en Internet, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas.
Estructura de un documento XML   La tecnología XML busca dar solución al problema de expresar información estructurada de la manera más abstracta y reutilizable.  <?xml version=&quot;1.0“ encoding=“UTF-8” ?> <!DOCTYPE movimientos SYSTEM “movimientos.dtd&quot; [<!ELEMENT movimientos ( movimiento )*>]>  <movimientos>   <movimiento>   <fecha> 06/09/2008 </fecha>   <descripcion> Retiro por cajero </descripcion>   <monto> -100.00 </monto>   </movimiento>   <movimiento>   <fecha> 05/09/2008 </fecha>   <descripcion> Transferencia de otra cuenta </descripcion>   <monto> 320.00 </monto>   </movimiento> </movimientos> Y el DTD(Document Type Definition) para este XML sería: <?xml version=&quot;1.0&quot; enconding=“UTF-8” ?> <!-- Este es el DTD de Edit_Mensaje --> <!ELEMENT movimiento (fecha, descripcion, monto)*>    <!ELEMENT fecha (#PCDATA)>   <!ELEMENT descripcion (#PCDATA)>    <!ELEMENT monto (#PCDATA)>  movimientos.xml movimientos.dtd
Conversación tradicional Cliente - Servidor
Interacción AJAX  Cliente - Servidor
Flujo del proceso de una aplicación AJAX
Respuestas del servidor (HTTP Response) Código de Status Razón Explicación 200 OK Petición correcta 204 No Content Documento sin datos 301 Moved Permanently Recurso Movido 401 Not Authorized Necesita autentificación 403 Forbidden Rechazada por servidor 404 Not Found No existe en servidor 408 Request Timeout Tiempo sobrepasado 500 Server Error Error en el servidor
El objeto XMLHTTPRequest Su objetivo es hacer peticiones asíncronas al servidor. Es la columna vertebral de todas las aplicaciones AJAX. Es admitido por todos los navegadores. Microsoft lo introdujo en IE 5 como un objeto ActiveX
Propiedades del objeto XMLHTTPRequest  Propiedades Descripción Onreadystatechange Determina que función será llamada cuando la propiedad readyState del objeto cambie. readyState Número entero que indica el status de la petición: 0 = No iniciada 1 = Cargando 2 = Cargado 3 = Interactivo 4 = Completado responseText Datos devueltos por el servidor en forma de string de texto responseXML Datos devueltos por el servidor expresados como un objeto documento. status Código estatus HTTP devuelto poro el servidor: 200 = OK (Petición correcta) 204 = No Content (Documento sin datos) 301 = Moved Permanently (Recurso Movido) 401 = Not Authorized (Necesita autenticación) 403 = Forbidden (Rechazada por servidor) 404 = Not Found (No existe en servidor) 408 = Request Timeout (Tiempo sobrepasado) 500 = Server Error (Error en el servidor)
Métodos del objeto XMLHTTPRequest  Propiedades Descripción abort() Detiene la petición actual. getAllResponseHeaders() Devuelve todas las cabeceras como un string. getResponseHeader(x) Devuelve el valor de la cabecera x como un string. open(‘method’, ’URL’, ’a’ ) Especifica el método HTTP (por ejemplo, GET o POST), la URL objetivo, y si la petición debe ser manejada asíncronamente (Si, a=‘True’ defecto; No, a=‘false’.) send(content) Envía la petición setRequestHeader( ‘label’ , ’value’ ) Configura un par parámetro y valor label=value y lo asigna a la cabecera para ser enviado con  la petición.
Clases y Objetos en JavaScript var oCliente  =  new  Cliente(); oCliente.dni  =  “43035678”; oCliente.nombres  =  “Luis”; oCliente.apellidos  =  “Perez A.”; alert(“Hola ” + oCliente. obtenerNombreCompleto() ); /** Clase Cliente **/ function Cliente(){ this.dni = null; this.nombres = null; this.apellidos = null; this.obtenerNombreCompleto = function(){   return this.nombres + &quot; &quot; + this.apellidos; } } 1 Javascript  no es un lenguaje de  Programación Orientada a Objetos  propiamente dicho como  Java , pero sí es un lenguaje de programación basado en  objetos .  En  Javascript  hay tres tipos de objetos: Objetos nativos de Javascript . Por ejemplo: Math, Date, Image, Number, String, Array… Objetos de navegador . Aquellos que proporciona el navegador del cliente. Por ejemplo: window, document, forms...  Objetos definidos por el usuario : Son aquellos que define el propio programador.
Métodos y propiedades privadas var oCliente  =  new  Cliente(); oCliente.nombres  =  “Luis”; oCliente.apellidos  =  “Perez A.”; alert(“DNI ” + oCliente.dni); // muestra undefined oCliente.setDni(“44035698”); alert(“DNI ” + oCliente.getDni() ); // muestra 44035698 //alert(oCliente.obtenerSoloNombre() ); // marcaría el siguiente error: “El objeto no acepta esta propiedad o metodo” /** Clase Cliente **/ function Cliente(){ var dni = null;   // propiedad privada this.nombres = null;   // propiedad pública this.apellidos = null; var that = this;   // propiedad privada, almacena la referencia del objeto actual(this), para poder utilizarlo en métodos privados como sucede en obtenerSoloNombre(). function obtenerSoloNombre(){  // método privado   return that.nombres; } this.obtenerNombreCompleto = function(){  // método público   return this.nombres + &quot; &quot; + this.apellidos; } this.setDni(dni){   this.dni = dni; } this.getDni(){ return this.dni; } } 2 Para privatizar metodos y propiedades basta con ya no poner la palabra  this .  Para acceder a las propiedades privadas se deberá crear sus getters y setters como se estila hacer en otros lenguajes de programación OO
Herencia en JavaScript var oEmpleado  =  new Empleado(); oEmpleado.nombres  =  &quot;43035678&quot;; oEmpleado.apellidos  =  &quot;Luis&quot;; oEmpleado.salario = 3000; alert(&quot;Metodo del padre &quot; + oEmpleado.obtenerNombreCompleto() ); alert(&quot;Metodo del hijo &quot; + oEmpleado.obtenerSalario() ); /** Clase Persona **/ function Persona(){ this.nombres = null; this.apellidos = null; this.obtenerNombreCompleto = function(){   return this.nombres + &quot; &quot; + this.apellidos; } } 3 La herencia en JavaScript no es explicita, es emulada. /** Clase Cliente hereda de Persona **/ function Empleado(){ this.codigo = null; this.salario = null; this.obtenerSalario = function(){   return this.salario; } } Empleado.prototype = new Persona();  /* Clona la funcionalidad de    Persona en Empleado  */
JSON  (JavaScript Object Notation) ¿Que es? Basado en sintaxis  JavaScript Formato de datos muy ligero Especialmente basado en  Arrays literales y Objetos literales Alternativa al  formato XML
Objetos Literales Almacenan  información en pares nombre : valor color  :  “rojo”, Se puede acceder a Estas propiedades Mediante el nombre del objeto y la sintaxis de punto. Mediante corchetes y nombre  de la propiedad 4
Arrays Literales Formato de datos muy ligero [ y ] Y por encerrar lista de valores  serparados por comas [ “string”, 24 , true, null ] 5
Mezclar Literales Es posible mezclar  literales objeto y  array Array que contiene objetos 6,  7.1 , 7.2 , 8 Objetos que contienen arrays
Librerías AJAX Existen cientos de frameworks en el mercado, de acuerdo con una encuesta del 2007, estos son los más usados: Dojo toolkit , Toolkit Modular JavaScript.  Ext (javascript library) , una librería que expande Prototype, Jquery y YUI.  jQuery , provee un framework Ajax y muchas otras utilidades.  Mootools , un framework compacto y modular mejor conocido por sus transiciones y efectos.  Prototype , provee framework Ajax y muchas otras utilidades.  qooxdoo , framework de aplicaciones Ajax. Es multiproposito e inclulle un toolkit GUI.  Script.aculo.us , es utilizado con Prototype principalmente para animaciones y desarrollo de interfaces.  Yahoo! UI Library , un conjunto de utilidades y controles para construir aplicaciones web enriquecidas usando técnicas como DOM scripting y AJAX.
Ext Es un framework AJAX.  Es de licencia pública general (GPL). También tiene licencia comercial, para empresas que hacen aplicaciones propietarias con este framework  y que no están dispuestos a distribuir y compartir el código fuente de su aplicación bajo la licencia GPL.
Ext Descargar Ext y su documentación http://extjs.com/download En la carpeta examples se encuentran todos los ejemplos de como crear formularios, paneles, grillas, etc.
Interfaces hechas bajo Ext Formularios
Interfaces hechas bajo Ext Grillas
Interfaces hechas bajo Ext Uso de Layouts
Interfaces hechas bajo Ext Grillas con datos agrupados
Interfaces hechas bajo Ext Desktop
Interfaces hechas bajo Ext Manejo de imágenes
Conclusiones Las aplicaciones AJAX hacen que la experiencia del usuario en la navegación sea menos aburrida. Ya no se refresca la página constantemente al interactuar con ella.  Con AJAX el tiempo de espera para una petición se reduce. El usuario al hacer un pedido (request) al servidor, no se envía toda la página. Por la misma razón anterior el trafico al servidor se reduce.  Las consideraciones que uno debe tener en cuenta es que puede haber problemas si el usuario ha deshabilitado el uso de JavaScript en su navegador. Hay que tener esto en cuenta cuando desarrollamos aplicaciones web.  No es bueno abusar de AJAX.  Demasiado código Ajax hace lento el navegador. A más Ajax, más uso de código JavaScript del lado del browser, por consiguiente mayor trabajo del browser. El rendimiento del cpu puede verse afectado.
Links de referencia Tutoriales de JavaScript, HTML, APIS, etc http://www.w3school.com   Web oficial de EXT http://www.extjs.com/   Documentacion de las clases de EXT http://extjs.com/deploy/dev/docs/   Foro oficial de Ext JS http://extjs.com/forum/   Grupo Yahoo para aprendizaje de JAVA, .NET, PHP , AJAX http://groups.yahoo.com/group/ing_sistemas_huacho Videos tutoriales de JavaScript, CSS, HTML, y muchos mas http://www.illasaron.com/html/
Gracias

Más contenido relacionado

ODP
Curso Jsp
PPT
Servlets y jsp
DOCX
Reportes En J Developer Parte 1 Y 2
PDF
Manual De Ajax En Espanol
PDF
Programacion web java
PDF
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
ODP
Curso Jsp Mas
ODP
Introducción a JQuery
Curso Jsp
Servlets y jsp
Reportes En J Developer Parte 1 Y 2
Manual De Ajax En Espanol
Programacion web java
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
Curso Jsp Mas
Introducción a JQuery

La actualidad más candente (20)

PPT
Curso Java Avanzado 2 Servlets
PPT
Introduccion Ajax V1.0
PPSX
Persistencia De Objetos(Hibernate)
ODP
Introducción a Java Persistence API
PPTX
PPSX
Java Persistence Api (Jpa)
PPT
Conceptos Introductorios Del Web 2
PPT
Charla Jquery
PDF
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
PPTX
Jquery parte 1
PPTX
Framework .NET 3.5 13 Programación orientada a la red
PDF
jQuery
PPTX
introduccion a Ajax
PPT
AJAX EN CURSO PHP
PDF
Java Primeros Pasos Revista- Edición 2
PDF
Introducción a los lenguajes de programación de la plataforma Web 2.0: Ajax
PPTX
Reportes
PPT
AJAX
DOCX
Java persitence api
ODP
Introduccion a Jquery
Curso Java Avanzado 2 Servlets
Introduccion Ajax V1.0
Persistencia De Objetos(Hibernate)
Introducción a Java Persistence API
Java Persistence Api (Jpa)
Conceptos Introductorios Del Web 2
Charla Jquery
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Jquery parte 1
Framework .NET 3.5 13 Programación orientada a la red
jQuery
introduccion a Ajax
AJAX EN CURSO PHP
Java Primeros Pasos Revista- Edición 2
Introducción a los lenguajes de programación de la plataforma Web 2.0: Ajax
Reportes
AJAX
Java persitence api
Introduccion a Jquery
Publicidad

Destacado (6)

PDF
Desatanizando Tecnologías: Javascript/AJAX
PPTX
Que es AJAX
PPT
Fundamentos De Web 2.0
PPTX
Introduccion a AJAX
PDF
Aprende Ajax
PPTX
Capitulo 4.7 prog iii
Desatanizando Tecnologías: Javascript/AJAX
Que es AJAX
Fundamentos De Web 2.0
Introduccion a AJAX
Aprende Ajax
Capitulo 4.7 prog iii
Publicidad

Similar a Ajax Huancayo (20)

PPT
01 Ext Js Introduccion
PPT
Conceptos acerca de Ajax
ODP
Ajax
PDF
Pdf
PPTX
PDF
Manual de ajax las entrañas de ajax
PPTX
Introduccion a java script y extjs, componentes extjs
PPTX
Presentacion ajax
PDF
Manualdeajax
PPT
Ajax
PPT
Inicios Ajax
DOCX
Libro introducción a ajax
PPS
Clase 5 AJAX - Desarrollo de aplicaciones móviles
PDF
Manualdeajax
PDF
Manual de ajax
PPTX
S4-DAW-2022S1.pptx
01 Ext Js Introduccion
Conceptos acerca de Ajax
Ajax
Pdf
Manual de ajax las entrañas de ajax
Introduccion a java script y extjs, componentes extjs
Presentacion ajax
Manualdeajax
Ajax
Inicios Ajax
Libro introducción a ajax
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Manualdeajax
Manual de ajax
S4-DAW-2022S1.pptx

Último (20)

PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
Maste clas de estructura metálica y arquitectura
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
taller de informática - LEY DE OHM
PPTX
Presentación de Redes de Datos modelo osi
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PDF
clase auditoria informatica 2025.........
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Presentación PASANTIAS AuditorioOO..pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Estrategia de apoyo tecnología miguel angel solis
Estrategia de apoyo tecnología grado 9-3
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
REDES INFORMATICAS REDES INFORMATICAS.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Maste clas de estructura metálica y arquitectura
Calidad desde el Docente y la mejora continua .pdf
SAP Transportation Management para LSP, TM140 Col18
Sesion 1 de microsoft power point - Clase 1
taller de informática - LEY DE OHM
Presentación de Redes de Datos modelo osi
historia_web de la creacion de un navegador_presentacion.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
clase auditoria informatica 2025.........

Ajax Huancayo

  • 1. Aplicaciones AJAX Presentado por : Mayer Horna García Jonathan Lara Vasquez 15 de Octubre, 2008 [email_address] COREIS - Huancayo [email_address]
  • 2. Agenda Preparar el entorno de desarrollo web bajo IDE Eclipse, levantar los proyectos del taller, instalar el Spket IDE, instalar el firebug Comparativa entre aplicaciones de escritorio, web y web + ajax AJAX – Conceptos Javascript XML JSON Anatomía de una aplicación AJAX El objeto XMLHTTPRequest Conversación con el servidor Trabajar con datos devueltos como XML Trabajar con datos devueltos como JSON Frameworks AJAX Uso de ExtJS
  • 3. Comportamiento de una aplicación de escritorio BD BD SELECT * FROM Provincia WHERE departamento_id = 2 Servidor Cliente departamentoId=2 request MantenimientoCalles_jsp.html <<build>> MantenimientoCalles.jsp response Comportamiento de una aplicación de web departamentoId=2 SELECT * FROM Distrito WHERE provincia_id = 12 SELECT * FROM Calle WHERE distrito_id = 23 provinciaId=12 distritoId=23 SELECT * FROM Provincia WHERE departamento_id = 2 distritoId=23 request MantenimientoCalles_jsp.html <<build>> MantenimientoCalles.jsp SELECT * FROM Calle WHERE distrito_id = 23 response SELECT * FROM Provincia WHERE departamento_id = 2 i1.1 provincia distrito calle
  • 4. Comportamiento de una aplicación Web + AJAX BD Servidor Cliente request response SELECT * FROM Provincia WHERE departamento_id = 2 Motor AJAX Objeto XMLHttpRequest departamentoId=2 new XMLHttpRequest() request response SELECT * FROM Calle WHERE distrito_id = 23 distritoId=23 new XMLHttpRequest() i1.2 i2 <?xml version=\&quot;1.0\&quot; ?> <provincias> <provincia> Huara </provincia> <provincia> Trujillo </provincia> <provincia> Chimbote </provincia> </provincias> provincias.xml <?xml version=\&quot;1.0\&quot; ?> <provincias> <provincia> Huara </provincia> <provincia> Trujillo </provincia> <provincia> Chimbote </provincia> </provincias> distrito.xml
  • 5. AJAX “Asynchronous Javascript y XML” (JavaScript asíncrono y XML) Es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Implica el uso coordinado de distintas tecnologías que en conjunto permiten una mayor rapidez y eficacia para las aplicaciones basadas en la web. Estas aplicaciones se ejecutan en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la velocidad y usabilidad en las aplicaciones.
  • 6. Javascript Fue desarrollado originalmente por Brendan Eich de Netscape con el nombre de Mocha, más tarde renombrado a LiveScript, y finalmente a JavaScript. El cambio de nombre de LiveScript a JavaScript coincidió aproximadamente con el momento en que Netscape agregó soporte para la tecnología Java en su navegador web Netscape Navigator. JavaScript fue presentado y desarrollado en diciembre de 1995. La denominación ha causado confusión, dando la impresión de que el lenguaje es un prolongación de Java, y se ha caracterizado por muchos como una estrategia de marketing de Netscape. JavaScript es un lenguaje de programación interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java. No es un lenguaje de Programación Orientada a Objetos propiamente dicho como Java , pero sí es un lenguaje de programación basado en objetos .
  • 7. XML E x tensible M arkup L anguage (lenguaje de marcas ampliable), XML no ha nacido sólo para su aplicación en Internet, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas.
  • 8. Estructura de un documento XML La tecnología XML busca dar solución al problema de expresar información estructurada de la manera más abstracta y reutilizable. <?xml version=&quot;1.0“ encoding=“UTF-8” ?> <!DOCTYPE movimientos SYSTEM “movimientos.dtd&quot; [<!ELEMENT movimientos ( movimiento )*>]> <movimientos> <movimiento> <fecha> 06/09/2008 </fecha> <descripcion> Retiro por cajero </descripcion> <monto> -100.00 </monto> </movimiento> <movimiento> <fecha> 05/09/2008 </fecha> <descripcion> Transferencia de otra cuenta </descripcion> <monto> 320.00 </monto> </movimiento> </movimientos> Y el DTD(Document Type Definition) para este XML sería: <?xml version=&quot;1.0&quot; enconding=“UTF-8” ?> <!-- Este es el DTD de Edit_Mensaje --> <!ELEMENT movimiento (fecha, descripcion, monto)*> <!ELEMENT fecha (#PCDATA)> <!ELEMENT descripcion (#PCDATA)> <!ELEMENT monto (#PCDATA)> movimientos.xml movimientos.dtd
  • 10. Interacción AJAX Cliente - Servidor
  • 11. Flujo del proceso de una aplicación AJAX
  • 12. Respuestas del servidor (HTTP Response) Código de Status Razón Explicación 200 OK Petición correcta 204 No Content Documento sin datos 301 Moved Permanently Recurso Movido 401 Not Authorized Necesita autentificación 403 Forbidden Rechazada por servidor 404 Not Found No existe en servidor 408 Request Timeout Tiempo sobrepasado 500 Server Error Error en el servidor
  • 13. El objeto XMLHTTPRequest Su objetivo es hacer peticiones asíncronas al servidor. Es la columna vertebral de todas las aplicaciones AJAX. Es admitido por todos los navegadores. Microsoft lo introdujo en IE 5 como un objeto ActiveX
  • 14. Propiedades del objeto XMLHTTPRequest Propiedades Descripción Onreadystatechange Determina que función será llamada cuando la propiedad readyState del objeto cambie. readyState Número entero que indica el status de la petición: 0 = No iniciada 1 = Cargando 2 = Cargado 3 = Interactivo 4 = Completado responseText Datos devueltos por el servidor en forma de string de texto responseXML Datos devueltos por el servidor expresados como un objeto documento. status Código estatus HTTP devuelto poro el servidor: 200 = OK (Petición correcta) 204 = No Content (Documento sin datos) 301 = Moved Permanently (Recurso Movido) 401 = Not Authorized (Necesita autenticación) 403 = Forbidden (Rechazada por servidor) 404 = Not Found (No existe en servidor) 408 = Request Timeout (Tiempo sobrepasado) 500 = Server Error (Error en el servidor)
  • 15. Métodos del objeto XMLHTTPRequest Propiedades Descripción abort() Detiene la petición actual. getAllResponseHeaders() Devuelve todas las cabeceras como un string. getResponseHeader(x) Devuelve el valor de la cabecera x como un string. open(‘method’, ’URL’, ’a’ ) Especifica el método HTTP (por ejemplo, GET o POST), la URL objetivo, y si la petición debe ser manejada asíncronamente (Si, a=‘True’ defecto; No, a=‘false’.) send(content) Envía la petición setRequestHeader( ‘label’ , ’value’ ) Configura un par parámetro y valor label=value y lo asigna a la cabecera para ser enviado con la petición.
  • 16. Clases y Objetos en JavaScript var oCliente = new Cliente(); oCliente.dni = “43035678”; oCliente.nombres = “Luis”; oCliente.apellidos = “Perez A.”; alert(“Hola ” + oCliente. obtenerNombreCompleto() ); /** Clase Cliente **/ function Cliente(){ this.dni = null; this.nombres = null; this.apellidos = null; this.obtenerNombreCompleto = function(){ return this.nombres + &quot; &quot; + this.apellidos; } } 1 Javascript no es un lenguaje de Programación Orientada a Objetos propiamente dicho como Java , pero sí es un lenguaje de programación basado en objetos . En Javascript hay tres tipos de objetos: Objetos nativos de Javascript . Por ejemplo: Math, Date, Image, Number, String, Array… Objetos de navegador . Aquellos que proporciona el navegador del cliente. Por ejemplo: window, document, forms... Objetos definidos por el usuario : Son aquellos que define el propio programador.
  • 17. Métodos y propiedades privadas var oCliente = new Cliente(); oCliente.nombres = “Luis”; oCliente.apellidos = “Perez A.”; alert(“DNI ” + oCliente.dni); // muestra undefined oCliente.setDni(“44035698”); alert(“DNI ” + oCliente.getDni() ); // muestra 44035698 //alert(oCliente.obtenerSoloNombre() ); // marcaría el siguiente error: “El objeto no acepta esta propiedad o metodo” /** Clase Cliente **/ function Cliente(){ var dni = null; // propiedad privada this.nombres = null; // propiedad pública this.apellidos = null; var that = this; // propiedad privada, almacena la referencia del objeto actual(this), para poder utilizarlo en métodos privados como sucede en obtenerSoloNombre(). function obtenerSoloNombre(){ // método privado return that.nombres; } this.obtenerNombreCompleto = function(){ // método público return this.nombres + &quot; &quot; + this.apellidos; } this.setDni(dni){ this.dni = dni; } this.getDni(){ return this.dni; } } 2 Para privatizar metodos y propiedades basta con ya no poner la palabra this . Para acceder a las propiedades privadas se deberá crear sus getters y setters como se estila hacer en otros lenguajes de programación OO
  • 18. Herencia en JavaScript var oEmpleado = new Empleado(); oEmpleado.nombres = &quot;43035678&quot;; oEmpleado.apellidos = &quot;Luis&quot;; oEmpleado.salario = 3000; alert(&quot;Metodo del padre &quot; + oEmpleado.obtenerNombreCompleto() ); alert(&quot;Metodo del hijo &quot; + oEmpleado.obtenerSalario() ); /** Clase Persona **/ function Persona(){ this.nombres = null; this.apellidos = null; this.obtenerNombreCompleto = function(){ return this.nombres + &quot; &quot; + this.apellidos; } } 3 La herencia en JavaScript no es explicita, es emulada. /** Clase Cliente hereda de Persona **/ function Empleado(){ this.codigo = null; this.salario = null; this.obtenerSalario = function(){ return this.salario; } } Empleado.prototype = new Persona(); /* Clona la funcionalidad de Persona en Empleado */
  • 19. JSON (JavaScript Object Notation) ¿Que es? Basado en sintaxis JavaScript Formato de datos muy ligero Especialmente basado en Arrays literales y Objetos literales Alternativa al formato XML
  • 20. Objetos Literales Almacenan información en pares nombre : valor color : “rojo”, Se puede acceder a Estas propiedades Mediante el nombre del objeto y la sintaxis de punto. Mediante corchetes y nombre de la propiedad 4
  • 21. Arrays Literales Formato de datos muy ligero [ y ] Y por encerrar lista de valores serparados por comas [ “string”, 24 , true, null ] 5
  • 22. Mezclar Literales Es posible mezclar literales objeto y array Array que contiene objetos 6, 7.1 , 7.2 , 8 Objetos que contienen arrays
  • 23. Librerías AJAX Existen cientos de frameworks en el mercado, de acuerdo con una encuesta del 2007, estos son los más usados: Dojo toolkit , Toolkit Modular JavaScript. Ext (javascript library) , una librería que expande Prototype, Jquery y YUI. jQuery , provee un framework Ajax y muchas otras utilidades. Mootools , un framework compacto y modular mejor conocido por sus transiciones y efectos. Prototype , provee framework Ajax y muchas otras utilidades. qooxdoo , framework de aplicaciones Ajax. Es multiproposito e inclulle un toolkit GUI. Script.aculo.us , es utilizado con Prototype principalmente para animaciones y desarrollo de interfaces. Yahoo! UI Library , un conjunto de utilidades y controles para construir aplicaciones web enriquecidas usando técnicas como DOM scripting y AJAX.
  • 24. Ext Es un framework AJAX. Es de licencia pública general (GPL). También tiene licencia comercial, para empresas que hacen aplicaciones propietarias con este framework y que no están dispuestos a distribuir y compartir el código fuente de su aplicación bajo la licencia GPL.
  • 25. Ext Descargar Ext y su documentación http://extjs.com/download En la carpeta examples se encuentran todos los ejemplos de como crear formularios, paneles, grillas, etc.
  • 26. Interfaces hechas bajo Ext Formularios
  • 27. Interfaces hechas bajo Ext Grillas
  • 28. Interfaces hechas bajo Ext Uso de Layouts
  • 29. Interfaces hechas bajo Ext Grillas con datos agrupados
  • 30. Interfaces hechas bajo Ext Desktop
  • 31. Interfaces hechas bajo Ext Manejo de imágenes
  • 32. Conclusiones Las aplicaciones AJAX hacen que la experiencia del usuario en la navegación sea menos aburrida. Ya no se refresca la página constantemente al interactuar con ella. Con AJAX el tiempo de espera para una petición se reduce. El usuario al hacer un pedido (request) al servidor, no se envía toda la página. Por la misma razón anterior el trafico al servidor se reduce. Las consideraciones que uno debe tener en cuenta es que puede haber problemas si el usuario ha deshabilitado el uso de JavaScript en su navegador. Hay que tener esto en cuenta cuando desarrollamos aplicaciones web. No es bueno abusar de AJAX. Demasiado código Ajax hace lento el navegador. A más Ajax, más uso de código JavaScript del lado del browser, por consiguiente mayor trabajo del browser. El rendimiento del cpu puede verse afectado.
  • 33. Links de referencia Tutoriales de JavaScript, HTML, APIS, etc http://www.w3school.com Web oficial de EXT http://www.extjs.com/ Documentacion de las clases de EXT http://extjs.com/deploy/dev/docs/ Foro oficial de Ext JS http://extjs.com/forum/ Grupo Yahoo para aprendizaje de JAVA, .NET, PHP , AJAX http://groups.yahoo.com/group/ing_sistemas_huacho Videos tutoriales de JavaScript, CSS, HTML, y muchos mas http://www.illasaron.com/html/