Autor: Cloves Carneiro
Traductor: simmone
Declaración de derechos de autor: cualquier sitio web autorizado por Matrix, alreimprimir, asegúrese de indicar la fuente original y la información del autor del artículo y esta declaración en forma de hipervínculo. Autor: Cloves Carneiro;simmone.
Dirección original: http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-dwr.html
Dirección china: http://www.matrix.org.cn/resource/article/43/43926_DWR_AJAX.html
Palabras clave: DWR javascript :void(0);">AJAX
Descripción general
Este artículo explica el uso del proyectode código abierto DWR (Direct Web Remoting) y el concepto de javascript :void(0);">AJAX (JavaScript asíncrono y XML ) para mejorar la usabilidad de las aplicaciones web. El autor muestra paso a paso cómo DWR hace que javascript :void(0);">La aplicación AJAX sea simple y rápida. (1.600 palabras; 20 de junio de 2005)
javascript :void(0);">AJAX, o JavaScript y XML asincrónicos, describe unatecnología de desarrollo que utiliza una mezcla de HTML (o XHTML) y hojas de estilo en cascada para expresar información con el fin de crear aplicaciones web interactivas; el modelode objetos de documento (DOM). ), JavaScript, muestra e interactúa dinámicamente con la información expresada y el objeto XMLHttpRequest intercambia y procesa datos de forma asincrónica con el servidor web.
Muchos ejemplos en Internet demuestran los pasos necesarios para interactuar con el servidor usando XMLHttpRequest dentro de un archivo HTML. Al escribir y mantener el código XMLHttpRequest manualmente, los desarrolladores deben lidiar con muchos problemas potenciales, especialmente problemas como la compatibilidad de implementación DOM entre navegadores. Esto llevará a pasar innumerables horas codificando y depurando código Javascript, lo que obviamente no es amigable para los desarrolladores.
El proyecto DWR (Direct Web Remoting) es una solución de código abierto bajo licencia Apache para desarrolladores que quieran utilizar javascript :void(0);">AJAX y XMLHttpRequest de forma sencilla. Dispone de un conjunto de funciones Javascript que simplificanla Método para llamar a objetos Java en el servidor de aplicaciones desde páginas HTML. Manipula diferentes tipos de parámetros manteniendo la legibilidad del código HTML.
DWR no es una inserción en un diseño, ni obliga a los objetos a utilizar ningún tipo de estructura de herencia. Funciona bien con aplicaciones dentro del marco de servlet. Para los desarrolladores que carecen de experiencia en programación DHTML, DWR también proporciona una biblioteca de JavaScript que contiene tareas DHTML de uso frecuente, como ensamblar tablas, llenar cuadros desplegables seleccionados con elementos y cambiar el contenido de elementos HTML como <div> y <span. . >
El sitio web de DWR es completo y tiene documentación extensa, que es la base de este artículo. Se proporcionan algunos ejemplos para mostrar cómo se utiliza DWR y qué tipo detrabajo se puede realizar con sus bibliotecas.
Este artículo permite a los lectores ver cómo se construye paso a paso una aplicación web que utiliza DWR. Le mostraré los detalles necesarios para crear esta sencilla aplicación de muestra, que se puede descargar y implementar en su entorno para ver cómo funciona DWR.
NOTA: No es difícil encontrar información sobre javascript :void(0);">AJAX; hay varios artículos y entradas de blogs en la web que cubren este tema, cada uno de los cuales intenta señalar y comentar un aspecto diferente del concepto. En la sección de recursos encontrará algunos enlaces interesantes a ejemplos y artículos para aprender más sobre javascript :void(0);">AJAX.
Aplicación de muestra <BR>La aplicación de muestra utilizada en este artículo simula un motor de búsqueda de alquiler de apartamentos en Toronto. Los usuarios pueden seleccionar un conjunto de criterios de búsqueda antes de realizar la búsqueda. Para mejorar la interactividad, javascript :void(0);">AJAX se utiliza en las dos situaciones siguientes:
·La aplicación informa al usuario cuántos resultados de búsqueda se devolverán en función de sus selecciones. Este número se actualiza en tiempo real - usando javascript :void(0);">AJAX - cuando cambia el número de dormitorios y baños seleccionados por el usuario, o el rango de precios. Cuando no hay o hay demasiados resultados de búsqueda que coincidan con los criterios , el usuario no tiene que hacer clic en el botón de búsqueda.
· La consulta de la base de datos y la recuperación de resultados se realiza mediante javascript :void(0);">AJAX. Cuando el usuario presiona el botón mostrar resultados, la base de datos realiza la búsqueda. De esta manera, la aplicación parece más receptiva y toda la información La página no necesita estar sobrecargada para mostrar resultados.
Base de datos <BR>La base de datos que utilizamos es HSQL, que es un motor de base de datos Java SQL que consume muy pocos recursos y puede integrarse con aplicaciones web sin necesidadde instalación ni configuración. Se utiliza un archivo SQL para crear una tabla en memoria y agregar algunos registros cuando se inicia el contexto de la aplicación web.
La aplicación de clase Java <BR>contiene dos clases principales llamadas Apartment y ApartmentDAO. La clase Apartment.java es una clase Java simple con propiedades y métodos getter/setter. ApartmentDAO.java es la clase de acceso a datos utilizada para consultar la base de datos y devolver información según los criterios de búsqueda del usuario. La implementación de la clase ApartmentDAO es sencilla; utiliza llamadas de conexión a la base de datos Java directamente para obtener el número total de apartamentos y la lista de apartamentos disponibles que coinciden con la solicitud del usuario.
Configuración y uso de DWR <BR>Configurar el uso de DWR es simple: copie el archivo jar de DWR en el directorio WEB-INF/lib de la aplicación web, agregue una declaración de servlet en web.xml y cree el archivo de configuración de DWR. Se requiere un archivo jar independiente para la distribución de DWR. Debe agregar el servlet DWR a la sección del descriptor de implementación en WEB-INF/web.xml de su aplicación.
<servlet>
<nombre-servlet>dwr-invoker</nombre-servlet>
<display-name>Servlet DWR</display-name>
<descripción>Servlet remoto web directo</descripción>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<parámetro-inicio>
<param-name>depurar</param-name>
<valor-param>verdadero</valor-param>
</init-param>
</servlet>
<mapeo-servlet>
<nombre-servlet>dwr-invoker</nombre-servlet>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
Un paso opcional es configurar DWR en modo de depuración, como en el ejemplo anterior, configurando el parámetro de depuración en verdadero en la sección de descripción del servlet. Cuando DWR está en modo de depuración, puede ver todos los objetos Java accesibles desde la página HTML. Aparecerá una página web que contiene una lista de objetos disponibles en la URL /WEBAPP/dwr, que muestra los métodos públicos del objeto. Los métodos enumerados se pueden llamar desde la página, lo que le permite, por primera vez, ejecutar métodos en objetos en el servidor. La siguiente imagen muestra cómo se ve la página de depuración:
Página de depuración
Ahora debe informarle a DWR qué objeto recibirá la solicitud a través del objeto XMLHttpRequest. Esta tarea se realiza mediante un archivo de configuración llamado dwr.xml. En el archivo de configuración, usted define los objetos que DWR le permite llamar desde la página web. Por diseño, DWR permite el acceso a todos los métodos públicos de una clase publicada, pero en nuestro caso solo permitimos el acceso a unos pocos métodos. Aquí está el archivo de configuración para nuestro ejemplo:
<dwr>
<permitir>
<convertir convertidor="bean" match="dwr.sample.Apartment"/>
<create creador="nuevo" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
<incluir método="buscarApartamentos"/>
<incluir método="countApartments"/>
</create>
</permitir>
</dwr>
El archivo anterior logra ambos objetivos en nuestro ejemplo. Primero, la etiqueta <convert> le dice a DWR que convierta el tipo de objeto dwr.sample.Apartment en una matriz asociativa porque, por razones de seguridad, DWR no convierte beans ordinarios de forma predeterminada. En segundo lugar, la etiqueta <create> permite a DWR exponer la clase dwr.sample.ApartmentDAO para llamadas de JavaScript. Los archivos JavaScript que utilizamos en la página están definidos por el atributo javascript. Debemos prestar atención a la etiqueta <include>, que especifica qué métodos de la clase dwr.sample.ApartmentDAO están disponibles.
Una vez configurado el código HTML/JSP , puede iniciar su aplicación web. En este momento, DWR estará listo para llamar a los métodos requeridos desde su página del lado del servidor HTML o Java (JSP). Creas archivos JavaScript. En el archivo search.jsp, debemos agregar la interfaz JavaScript proporcionada por DWR, así como el motor DWR, y agregar las siguientes tres líneas a nuestrocódigo :
<script src='dwr/interface/ApartmentDAO.js'></ guión>
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
Notamos que cuando el usuario cambia el criterio de búsqueda, esta es la primera aplicación de javascript :void(0);">AJAX en el programa de muestra; como él Como ve, el número de apartamentos disponibles se actualiza cuando cambian los criterios. Creé dos funciones de JavaScript: La función ApartmentDAO.countApartments() es la parte más interesante y es el primer parámetro, la función loadTotal(), que especifica el método de JavaScript. DWR llamará cuando reciba una respuesta del servidor. Luego se llamará a loadTotal para mostrar los resultados en el <div> de la página HTML utilizada en escenarios interactivos:
función updateTotal() {.
$("resultTable").style.display = 'ninguno';
var dormitorios = document.getElementById("dormitorios").value;
var baños = document.getElementById("baños").value;
var precio = document.getElementById("precio").valor;
ApartmentDAO.countApartments(loadTotal, dormitorios, baños, precio);
}
función cargarTotal(datos) {
document.getElementById("totalRecords").innerHTML = datos;
}
Obviamente, el usuario quiere ver listados de apartamentos que coincidan con sus criterios de búsqueda. Luego, cuando el usuario está satisfecho con sus criterios de búsqueda y los totales son válidos, presiona el botón que muestra los resultados, que llama al método JavaScript updateResults():
función actualizarResultados() {
DWRUtil.removeAllRows("cuerpo del apartamento");
var dormitorios = document.getElementById("dormitorios").value;
var baños = document.getElementById("baños").value;
var precio = document.getElementById("precio").valor;
ApartmentDAO.findApartments(fillTable, dormitorios, baños, precio);
$("resultTable").style.display = '';
}
función llenarTabla(apartamento) {
DWRUtil.addRows("apartmentsbody", apartamento, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);
}
El método updateResults() borra el campo de la tabla que almacena los resultados devueltos por la búsqueda, obtiene los parámetros requeridos de la interfaz de usuario y pasa estos parámetros al objeto ApartmentDAO creado por DWR. Luego se ejecutará la consulta de la base de datos y se llamará a fillTable(), que analiza el objeto devuelto por DWR (apartamentos) y lo muestra en la página (apartamentos).
Factores de seguridad <BR>Para que el ejemplo sea breve, la clase ApartmentDAO se mantiene lo más simple posible, pero dicha clase generalmente tiene un conjunto de métodos establecidos para manipular datos, como insertar(), actualizar() y eliminar(). DWR expone todos los métodos públicos para que sean llamados por todas las páginas HTML. Por razones de seguridad, no es aconsejable exponer su capa de acceso a datos de esta manera. Los desarrolladores pueden crear una fachada que centralice la comunicación entre todas las funciones de JavaScript y los componentes comerciales subyacentes, limitando así la exposición excesiva de la funcionalidad.
Conclusión <BR>Este artículo es solo un comienzo para que utilice javascript :void(0);">AJAX con tecnología DWR en sus proyectos. DWR le permite concentrarse en cómo mejorar el modelo de interacción de su aplicación, eliminando el carga de escribir y depurar código JavaScript El desafío más interesante con javascript :void(0);">AJAX es definir dónde y cómo mejorar la usabilidad. DWR es responsable de operar la comunicación entre la página web y sus objetos Java, lo que le ayuda a centrarse por completo en cómo hacer que la interfaz de usuario de su aplicación sea más amigable.
Me gustaría agradecer a Mircea Oancea y Marcos Pereira, quienes leyeron este artículo y brindaron comentarios muy valiosos.
Recursos ·javaworld.com:javaworld.com
·Comunidad de desarrolladores Matrix-Java: http://www.matrix.org.cn/
·onjava.com:onjava.com
·Descargue todo el código fuente del programa de muestra: http://www.javaworld.com/javaworld/jw-06-2005/dwr/jw-0620-dwr.war
·DWR: http://www.getahead.ltd.uk/dwr/index.html
·HSQL: http://hsqldb.sourceforge.net/
·javascript :void(0);">Definición de AJAX: http://en.wikipedia.org/wiki/javascript :void(0);">AJAX
· "javascript :void(0);">AJAX: Un nuevo camino hacia las aplicaciones web": Jesse James Garrett (Adaptive Path, 2005.2): http://www.adaptivepath.com/publications/essays/archives/000385.php
· “Una interfaz web muy dinámica” Drew McLellan (xml.com, 2005.2): http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
·XMLHttpRequest y javascript :void(0);">Ejemplo de trabajo de AJAX: http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples
· “Prácticas utilizables XMLHttpRequest” Thomas Baekdal (Baekdal.com, 2005.3): http://www.baekdal.com/articles/Usability/usable-XMLHttpRequest/
·"Pautas de uso de XMLHttpRequest" Thomas Baekdal (Baekdal.com, 2005.2): http://www.baekdal.com/articles/Usability/XMLHttpRequest-guidelines/