Uso de AJAX Con Java y PHP
Uso de AJAX Con Java y PHP
J U L I O D E 2 0 1 2
VOLUMEN 9 NÚMERO 2
Resumen
* Ingeniera de Sistemas y especialista en Multimedia Educativa, Universidad Antonio Nariño de Bogotá. Especialista
en Educación en Tecnología, Universidad Distrital. Magíster en Ciencias de la Información y las Telecomunicaciones,
Universidad Distrital. Docente investigadora del grupo Metis, adscrito a la Facultad Tecnológica de la Universidad
Distrital Francisco José de Caldas. spinzon@[Link] 155
155
Abstract
156
156
Existen muchos lenguajes que son utiliza- XHTML eXtensible Hyper Text Markup Lan-
dos por los desarrolladores para implemen- guage (lenguaje extensible de marcado de hiper-
tar aplicaciones web, entre ellos Java y Php, texto): es un lenguaje de etiquetas que sirve
los cuales pueden hacer uso de AJAX para para crear páginas web, aunque mejora la 157
157
estructura que se ha definido en el lengua- DOM Document Object Model (Modelo de Ob-
je HTML. jetos del Documento): el W3C: “define la es-
tructura lógica de los documentos y el modo
Como ya se conoce, todas las páginas es- en que se accede y manipula” [3]; es un API
tán hechas en lenguaje HTML (HyperText (Interfaz de Programación de Aplicaciones)
Markup Language), pero dado el desarrollo que permite a los desarrolladores web rea-
del diseño web y la necesidad de cubrir nue- lizar operaciones sobre una página también
vos requerimientos de los usuarios, las en- llamada documento, para agregar, modificar
tidades que definen las pautas en esta área, o eliminar cualquier objeto o contenido que
como el consorcio W3C, pretenden crear pá- contenga esta.
ginas con significado, es decir que las pági-
nas no solo sean un conjunto de elementos, Por lo general la estructura de los objetos
como texto, imágenes y vínculos, sino que es- dentro de la página está definida por una
tén asociadas a un significado y además per- jerarquía de objetos que tienen relaciona-
mitan separar claramente las características das características y funciones que hacen
que definen la apariencia y la información más fácil su uso desde cualquier lenguaje de
que se va a presentar. Por lo cual se desarro- programación.
lló el estándar XHTML, que es una adapta-
ción de HTML agregando las capacidades XML y XSLT XML Stylesheets Language for
del lenguaje XML, el cual permite que las pá- Transformation (Lenguaje de Estilo Extensible):
ginas contengan elementos con una estructu- es una especificación del W3C que permi-
ra bien definida y se puedan configurar para te definir una plantilla para transformar do-
ser presentarlas desde cualquier dispositivo cumentos XML en otro tipo de documentos,
o navegador haciéndolas más flexibles. como páginas Web en HTML y XHTML. Con
este lenguaje se pueden crear plantillas que
CSS Cascading Style Sheets (hojas de estilo en contienen un conjunto de reglas de transfor-
cascada): este estándar, también definido por mación aplicadas al documento XML, que
el W3C, está muy relacionado con los len- también se llaman reglas de estilo XSLT; es-
guajes HTML y XHTML, ya que se encarga tas luego son analizadas por un procesador
de definir el estilo o apariencia de la pági- de XSLT, el cual hace la transformación para
na web; permite manipular los formatos de generar el archivo correspondiente para vi-
los elementos teniendo en cuenta caracterís- sualizarlo en un dispositivo específico [4].
ticas como color, posición y fuentes y mejora Este tipo de transformaciones favorece sepa-
la presentación de la información que contie- rar el contenido de la presentación.
ne la página de acuerdo con el tipo de dispo-
sitivo donde se va a visualizar, por lo cual es XML HttpRequest (Extensible Markup Langua-
fácil acceder a las páginas desde un teléfono ge/Hypertext Transfer Protocol): es un objeto
celular, una tableta o un computador perso- que permite hacer peticiones al servidor de
nal sin que la presentación se altere [2]. forma asíncrona y sin tener que actualizar las
páginas en las que se hacen dichas peticiones
Las hojas de estilo facilitan el mantenimien- [5]. Este objeto está definido en todos los na-
to de las páginas web ya que se definen de vegadores para realizar las acciones de trans-
forma independiente y separada de la estruc- ferencia de datos.
tura de estas y se convierten en una buena
158
158 práctica para el desarrollo web.
En el caso en que el usuario accede a una aplicación que no utiliza AJAX, esta es enviada des-
de el servidor al navegador donde el usuario puede visualizar y manipular los elementos de
la o las paginas (tiempo de uso de la página en el navegador), y cuando el usuario activa una
acción que requiera ser ejecutada por el servidor, este deberá actualizar la página nuevamente
159
159
160
160
La capa lógica contendrá las clases que incor- La estructura de la base de datos definida
poran la funcionalidad para realizar los pro- para el ejemplo se puede importar del si-
cesos de filtrado y consulta de la aplicación. guiente código en formato SQL, donde se
define el nombre de la base de datos como
La capa de persistencia contendrá la cone- empresa que contiene una tabla llamada
xión a la base de datos que permitirá la ges- vehiculos cuyos campos son idVehiculo, pla-
tión de la información que será manipulada ca, marca y modelo; además se agregaron
por la aplicación. Para ello el uso de Mysql varios registros inicialmente para que se pre-
puede ser una buena opción ya que es un senten en la página al ser mostrada por pri-
manejador de base de datos libre y tiene un mera vez en el navegador (figura 4).
buen soporte de datos.
161
161
162
162 Fuente: elaboración propia.
Código en lenguaje Php: este código se almace- da como id=vistaConsulta, en la línea 25, en
na con el nombre de [Link] e incorpora las la cual se mostrará siempre el resultado de
reglas de estilo que se plantearon previamen- la función enviar(), la que permite visualizar
te en un archivo llamado [Link], tal como los datos generados por las consultas hechas
se observa en la línea 8. Adicionalmente se por el usuario.
agrega un script de Java llamado [Link] en la
línea 9, que contiene el código para crear el Código de un servlet en Java: se puede crear un
objeto XMLHttpRequest y la función enviar() servlet con el nombre [Link], se puede uti-
que será activada por el usuario desde el bo- lizar el mismo código de Php, ya que, como
tón Buscar o al cargar la página, como se ob- se ha dicho, esta página es en HTML; solo se
serva en las líneas 19 y 26. agrega la línea 7 para importar la ruta del ar-
chivo que contiene la lógica de la aplicación
Como se indicó, se están usando capas div y se modifica la línea 11 para cambiar el títu-
para agrupar elementos de la página; una lo de la página (figura 7).
de las más importantes es la div identifica-
164
164
Archivo del script AJAX: el archivo [Link] es Dado que el objeto fue creado por Micro-
el script que se agrega en la página principal soft para la versión 5.0 del Internet Explo-
y, como ya se ha indicado, contiene la defini- rer utilizando un objeto ActiveX [7, p. 114],
ción de las funciones de JavaScript que per- el cual permite crear objetos que pueden ser
miten realizar las siguientes tareas: usados en internet de forma independiente
de un lenguaje de programación, se usa el
• Definir el objeto XMLHttpRequest. objeto [Link] para obtener el
XMLHttpRequest en versiones menores de
• Definir la función para enviar la informa- Internet Explorer 7.0, como se observa en las
ción al servidor. líneas 3 y 4 del código.
• Validar y obtener la información en el Por otra parte, para crear el objeto XML-
cliente. HttpRequest en navegadores como Firefox,
Opera, Safari, Opera, versiones de Internet
Definición objeto XMLHttpRequest: este obje- Explorer superiores a 7.0, entre otros, se uti-
to permite generar las peticiones asíncronas liza la forma nativa del mismo con el objeto
desde la página, aunque se obtiene de forma [Link] [8] empleado en las
diferente en cada tipo de navegador, por lo líneas 5 y 6.
cual es necesario validar la creación de este.
En la figura 8 se muestra el código que co-
rresponde a un formato estándar para reali-
zar dicho proceso.
165
165
La función enviar ejecuta varios métodos del objeto AJAX que permiten hacer la petición al
servidor y enviar la información necesaria para realizar el proceso que el cliente ha solicita-
do (figura 9).
open() del objeto XMLHttpRequest, tal como questHeader utilizados para obtener el estado
aparece en la línea 18; este método requiere de la petición [9] y definir el formato de la
como mínimo dos parámetros: el primero co- cabecera de la petición [10], respectivamente.
rresponde al método de envío de los datos y Por último se ejecuta el método send que en-
el segundo contiene el URL del archivo con vía los datos a la URL con la que se estableció
el que se desea establecer la conexión, en este la conexión utilizando el método open.
caso [Link]. El parámetro true se agrega
para especificar que la conexión se hará de 6. Validar y obtener
modo asíncrono, aunque por defecto se reali- la información en el cliente
zan este tipo de peticiones.
El proceso de validación evalúa el estado
En Java la línea 18 cambia por la siguiente de la petición por medio de las propieda-
instrucción, la cual puede ser un servlet que des readyState y status del objeto XMLHtt-
procesa los datos de la petición: pRequest. La propiedad readyState permite
identificar si la petición se ha enviado satis-
[Link](“POST”, “Logica/ factoriamente y se encuentra cargada en el
consulta”,true); servidor, en este caso tendrá el valor 4, y la
propiedad status identifica si la respuesta del
Después de activar la conexión se ejecuta el servidor es correcta cuando tiene el valor 200
evento onreadystatechange y el método setRe- [11]. El código que se puede utilizar para rea-
lizar este proceso se incluye en la función va-
lidaEnvio que se muestra en la figura 10.
167
167
6.1. Capa lógica Código Php archivo [Link]: este código re-
cibe los datos marca y función por el método
La implementación de la lógica solo requie- post. El parámetro función se utiliza para va-
re definir las funciones que permitirán obte- lidar qué función debe ser ejecutada, es decir,
ner los datos que se encuentran almacenados si se recibe el parámetro marca con el nombre
en la base de datos; para ello se crean las fun- de la función consultaMarca() se hace el corres-
ciones consultaTodos(), consultaMarca() y pondiente llamado, de lo contrario se ejecuta
mostrarDatos(). Cada una de estas funcio- la función consultaTodos(). Finalmente la fun-
nes manipula un objeto instanciado de la cla- ción mostrarDatos() manipula el conjunto de
se Vehiculo, el cual contiene los métodos de registros que se obtiene de cualquiera de las
conexión y ejecución de las consultas corres- funciones de consulta y lo visualiza dentro de
pondientes. A continuación se muestra el có- una tabla; este es el resultado que se presenta
digo propuesto para implementar dichas en el contenedor vistaConsulta de la página del
funciones con los lenguajes Php y Java. cliente (figura 11).
CódigoJava del servlet Consulta: este archivo no es muy diferente del archivo consulta Php, solo
incorpora las funciones necesarias para ejecutar la petición de servidor por medio de la fun-
168
168 ción processRequest. En las figuras 12, 13 y 14 se presenta el código correspondiente.
170
170
En esta capa se ha definido la clase ConexiónBD que conecta con MySQL y básicamente con-
tiene los métodos conectar() para establecer la conexión con la base de datos y consultar() para
ejecutar la sentencia MySQL que genera el conjunto de registros requeridos. En las figuras 17
y 18 se presenta el código propuesto de esta clase en Php y Java.
172
172
173
173
9. Referencias
Figura 19. Vista del resultado
de la ejecución consulta con AJAX [1] J. J. Garrett, Ajax: A New Approach
to Web Applications. Disponible en:
[Link]/ideas/
ajax-new-approach-web-applications
[2] Consorcio W3C, HTML y CSS. Dis-
ponible en: [Link]/standards/
webdesign/htmlcss
[3] P. Le Hégaret, L. Wood y J. Robie, ¿Qué
es el Modelo de Objetos del Documento?
Disponible en: [Link]/2005/03/
DOM3Core-es/[Link]
[4] Consorcio W3C, XSL Transformations
(XSLT)Version 1.0. Disponible en: www.
[Link]/TR/xslt.
[5] Consorcio W3C, XMLHttpRequest Le-
vel 2. Disponible en: [Link]/TR/
XMLHttpRequest
[6] Mozilla Developer Network, About Ja-
Fuente: elaboración propia. vaScript. Disponible en: [Link]
[Link]/en-US/docs/
8. Conclusión JavaScript/About_JavaScript.
[7] J. Eguiluz Pérez, Introducción a AJAX.
Para desarrollar aplicaciones web que le brin- Disponible en: [Link]
den al usuario una buena funcionalidad, es [Link]/introduccion-a-ajax-por-
necesario utilizar las tecnologías que se en- javier-eguiluz-perez/
cuentran a nuestro alcance, sin dejar de lado [8] W3schools, The XMLHttpRequest Object.
los estándares establecidos para su diseño e Disponible en: [Link]/
implementación. xml/xml_http.asp
[9] Consorcio W3C. l. cit. Disponible en:
AJAX es solo una de las múltiples formas de [Link]/TR/XMLHttpRequest/
proporcionar esta característica. Lo impor- #handler-xhr-onreadystatechange
tante es comenzar y una de las maneras de [10] Consorcio W3C, ibíd. Disponible en:
hacer nuevas aplicaciones es reutilizando el [Link]/TR/XMLHttpRequest/
código que ya está disponible. #the-setrequestheader-method
[11] W3schools, AJAX - The onreadystate-
change Event. Disponible en: www.
[Link]/ajax/ajax_xmlhttpre-
quest_onreadystatechange.asp
174
174
175
175