DWR es un marco, que simplemente puede llamar a los métodos Java directamente en JavaScript sin tener que escribir mucho código JavaScript. Su implementación se basa en AJAX y puede lograr un efecto sin actualización.
Hay muchos ejemplos de DWR en Internet, pero la mayoría de ellos son solo llamadas de algún método. Este artículo solo presenta DWR en el nivel de uso, y no implica más tecnología y diseño. El propósito es permitir a los principiantes aprender rápidamente cómo se llaman varios métodos Java en JavaScript.
1. Artículo de configuración de DWR Web.xml
1. Mínimo coincidente
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class></servlet><servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern></servlet-mapping>
2. Cuando queremos ver la página de prueba (usando el modo de depuración/prueba) generada automáticamente por DWR, podemos agregarla a la configuración del servlet.
<Init-Param> <amamname> debug </amamname> <amam-value> true </param-value> </init-param>
Este parámetro DWR es falso de forma predeterminada. Si elige verdadero, podemos ver cada clase DWR que implementa a través de http: // localhost: puerto/app/dwr. Y puede probar si cada método del código Java se ejecuta normalmente. Por razones de seguridad, debe establecer este parámetro en falso en un entorno formal.
3. Configuración de múltiples archivos dwr.xml
Puede haber varias situaciones, las enumeraremos una por una. Un servlet, múltiples archivos de configuración DWR.XML; Múltiples servlets, cada servlet corresponde a uno o más archivos de configuración DWR.XML.
3.1. Un servlet, múltiples archivos de configuración DWR.XML
<Servlet> <Servlet-name> dwr-invoker </servlet-name> <ervlet-class> uk.ltd.getehead.dwr.dwrservlet </servlet-class> <itel-param> <amamname> config-1 </amamamame> <amam-value> webinf/dwr1.xmml </param-value> </initero-param> <Amam-name> config-2 </param-name> <amam-value> web-inf/dwr2.xml </amam-value> </it-param> <init-param> <amamname> config-2 </param-name> <amarr-value> web-inf/dwr2.xml </amarr-value> </itiNparam> </servlet>
En esta configuración, el valor de Param-Name debe comenzar con la configuración. Param-name puede tener> = 0. Si no hay un nombre de param, se leerá web-inf/dwr.xml. Si hay más de cero nombres de parámetros, el archivo web-inf/dwr.xml no se leerá.
3.2. Múltiples servlets, cada servlet corresponde a uno o más dwr.xml
<Servlet> <Servlet-name> dwr-invoker </servlet-name> <ervlet-class> uk.ltd.getehead.dwr.dwrservlet </servlet-class> </servlet> <ervlet> <ervlet-name> dwrinvoker1 </servlet-name-name-class> uk.ltdd.geteead.dwrservlet </servlet-name </servlet-name <servlet-class> uk.ltdd.geteead.dwrservlet </servlet-clas <amamname> config-admin </param-name> <amam-value> web-inf/dwr1.xml </param-value> </it-param> <it-param> <amamname> debug </amamname> <amam-value> true </param-value> </init-param> </servlet> <ervlet-mapping> <servlet-mapping> <ervlet-name> dwr-invoker </servlet-name> <url-pattern>/dwr/*</ url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> dwr-invoker1 </servlet-name> <URL-Pattern>/DWR1/*</url-Pattern> </Servlet-mapping>
En este caso, podemos controlar los permisos de acuerdo con la seguridad de J2EE y agregar diferentes roles para diferentes URL.
2. Uso de DWR
1. Llamar al método Java sin valor de retorno y parámetros
1.1. Configuración de dwr.xml
<Dwr> <Ellow> <create creator = "new" javaScript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include método = "testMethod1"/> </ create> </inging> </dwr>
Las etiquetas incluyen cosas que pueden estar expuestas al acceso de JavaScript.
La etiqueta especifica la clase Java a la que se puede acceder en JavaScript y define cómo DWR debe obtener las instancias de la clase para ser remotas. El atributo creador = "nuevo" especifica el método de generación de instancias de clase Java. Nuevo significa que DWR debe llamar al constructor predeterminado de la clase para obtener la instancia. Otros incluyen métodos de resorte, que pueden integrarse con el contenedor IOC Spring para obtener la instancia, etc. El atributo JavaScript = "TestClass" especifica el nombre utilizado por el código JavaScript para acceder al objeto.
La etiqueta especifica el nombre de la clase Java que se expondrá a JavaScript.
La etiqueta especifica el método que se expone a JavaScript. Si no se especifica, se divulgarán todos los métodos.
La etiqueta especifica el método para evitar el acceso.
1.2. Llamado en JavaScript
Primero, presente los scripts de JavaScript
<script src = 'dwr/interface/testclass.js'> </script> <script src = 'dwr/motor.js'> </script> <script src = 'dwr/util.js'> </script>
Entre ellos, TestClass.js es generado automáticamente por DWR en función del archivo de configuración, y Engine.js y Util.js son archivos de script que vienen con DWR.
En segundo lugar, escriba una función JavaScript que llame a un método Java
Función CallTestMethod1 () {testClass.testmethod1 ();}2. Llame al método Java con un valor de retorno simple
2.1. Configuración de DWR.xml
La misma configuración que 1.1
<Dwr> <Ellow> <create creator = "new" javaScript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include método = "testMethod2"/> </create> </digna> </dwr>
2.2. Llamado en JavaScript
Primero, presente los scripts de JavaScript
En segundo lugar, escriba una función JavaScript que llama a un método Java y una función de devolución de llamada que recibe el valor de retorno.
Función callTestMethod2 () {testClass.testmethod2 (llameBackfortestMethod2);} Función CallbackbackFortestMethod2 (data) {// donde el valor de retorno de la fecha recibe el método // El valor de retorno se puede procesar y mostrar aquí, etc. Alerta ("El valor de retorno es" + Data);}donde la devoción de llamadas Method2 es una función de devolución de llamada que recibe el valor de retorno
3. Llame al método Java con parámetros simples
3.1. Configuración de dwr.xml
La misma configuración que 1.1
<Dwr> <Ellow> <create creator = "new" javaScript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include método = "testMethod3"/> </create> </digna> </dwr>
3.2. Llamado en JavaScript
Primero, presente los scripts de JavaScript
En segundo lugar, escriba una función JavaScript que llame a un método Java
Función CallTestMethod3 () {// Defina los datos de parámetro var que se pasarán al método java; // construye el parámetro datos = "cadena de prueba"; testClass.testmethod3 (data);}4. Llame al método Java que devuelve Javabean
4.1. Configuración de DWR.xml
<Dwr> <Ellow> <create creator = "new" javaScript = "testClass"> <param name = "class" value = "com.destclass"/> <incluido método = "testMethod4"/> </create> <convert c match = "" "Com.dwr.testbean"> <param name = "incluir" valor = "username, contraseña"/> </convert> </aviDO>
Las etiquetas son responsables de exponer las clases y métodos utilizados para los controles remotos web, mientras que las etiquetas son responsables de los parámetros y los tipos de retorno de estos métodos. La función del elemento Convertir es decirle a DWR cómo convertir los tipos de datos entre la representación del objeto Java del lado del servidor y JavaScript serializado. DWR ajusta automáticamente los tipos de datos simples entre las representaciones Java y JavaScript. Estos tipos incluyen tipos nativos de Java y sus respectivas representaciones de clase encapsuladas, así como tipos de cadena, fecha, matriz y colección. DWR también puede convertir Javabeans en representaciones de JavaScript, pero por razones de seguridad, requiere una configuración explícita, y las etiquetas realizan esta función. El atributo C especifica el método de conversión para usar la especificación de nombres de Javabean, el atributo Match = "" com.dwr.testbean "especifica el nombre del Javabean que se convertirá, y la etiqueta especifica el atributo de Javabean que se convertirá.
4.2. Llamado en JavaScript
Primero, presente los scripts de JavaScript
En segundo lugar, escriba una función JavaScript que llama a un método Java y una función de devolución de llamada que recibe el valor de retorno.
Donde la devoción de llamada Method4 es una función de devolución de llamada que recibe el valor de retorno
5. Llame al método Java con los parámetros de Javabean
5.1. Configuración de DWR.xml
<dwr> <ingod> <create creator = "new" javaScript = "testClass"> <param name = "class" value = "com.dwr.tclass"/> <include método = "testMethod5"/> </create> <convert c match = "com.dwr.testbean"> <param name = "incluir" valor = "username, contraseña"/> </</Convert> </ISTiad> <—Weod> <Sheme> <Sheme> <Sow)
5.2. Llamado en JavaScript
Primero, presente los scripts de JavaScript
En segundo lugar, escriba una función JavaScript que llame a un método Java
Función CallTestMethod5 () {// Defina los datos de parámetro VAR que se pasarán al método Java; // Construye el parámetro, la fecha es en realidad un objeto data = {nombre de usuario: "usuario", contraseña: "contraseña"} testClass.testmethod5 (datos);}Y agregue el siguiente segmento de configuración a dwr.xml
<Signures> <! [Cdata [import java.util.list; import com.dwr.testclass; import com.dwr.testbean; testClass.testmethod7 (map <string, testbean>);]]> </firmas>
3. De lo anterior, podemos encontrar que para el caso donde el valor de retorno del método Java es Lista (SET), DWR lo convierte en una matriz de objetos y pasa un JavaScript; Para el caso en el que el valor de retorno del método Java es MAP, DWR lo convierte en un objeto, donde el atributo de objeto es el valor clave del mapa original y el valor del atributo es el valor correspondiente del mapa original.
4. Si los parámetros del método Java son List (SET) y MAP, JavaScript también debe construir los datos de JavaScript correspondientes para pasar a Java de acuerdo con tres tipos de cosas.