DWR ist ein Framework, das einfach Java -Methoden direkt in JavaScript aufrufen kann, ohne viel JavaScript -Code schreiben zu müssen. Die Implementierung basiert auf AJAX und kann einen aktualisierten Effekt erzielen.
Es gibt viele Beispiele für DWR im Internet, aber die meisten von ihnen sind nur Aufrufe einer Methode. In diesem Artikel wird DWR nur auf Nutzungsebene eingeführt und beinhaltet nicht mehr Technologie und Design. Ziel ist es, Anfängern schnell zu ermöglichen, wie verschiedene Java -Methoden in JavaScript aufgerufen werden.
1. DWR -Konfigurationsartikel web.xml
1. Mindestübereinstimmung
<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. Wenn wir die von DWR automatisch generierte Testseite (mit dem Debug-/Testmodus) sehen möchten, können wir sie der Servlet -Konfiguration hinzufügen.
<init-param> <param-name> debugg </param-name> <param-value> true </param-value> </init-param>
Dieser Parameter DWR ist standardmäßig falsch. Wenn Sie True wählen, können wir jede DWR -Klasse sehen, die Sie über http: // localhost: port/App/DWR bereitstellen. Und Sie können testen, ob jede Methode des Java -Code normal ausgeführt wird. Aus Sicherheitsgründen müssen Sie diesen Parameter in einer formalen Umgebung auf False setzen.
3. Konfiguration mehrerer DWR.xml -Dateien
Es kann mehrere Situationen geben, wir werden sie einzeln auflisten. Ein Servlet, mehrere DWR.XML -Konfigurationsdateien; Mehrere Servlets, jedes Servlet entspricht einer oder mehreren DWR.xml -Konfigurationsdateien.
3.1. Ein Servlet, mehrere DWR.XML -Konfigurationsdateien
<servlet> <Servlet-name> DWR-Invoker </servlet-name> <servlet-classe> uk.ltd.getahead.dwr.dwrServlet </servlet-classe> <init-param> <param-name> config-1 </param-name> <param-value> web-inf/dwr1.xml </param-value> </init-param> </param-value> <PARAM-NAME> config-2 </param-name> <param-value> web-inf/dwr2.xml </param-value> </init-param> <init-param> <param-name> config-2 </param-name> <param-value> web-inf/dwr2.xml </param-value> </init-param> </param>
In dieser Konfiguration muss der Wert des Paramennamens mit der Konfiguration beginnen. Paramenname kann> = 0 haben. Wenn es keinen Paramennamen gibt, wird Web-inf/dwr.xml gelesen. Wenn es mehr als Null-Paramamen gibt, wird die Datei web-inf/dwr.xml nicht gelesen.
3.2. Mehrere Servlets, jedes Servlet entspricht einem oder mehreren DWR.xml
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class></servlet><servlet> <servlet-name>dwr-invoker1</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <Param-name> config-admin </param-name> <param-value> web-inf/dwr1.xml </param-value> </init-param> <init-param> <param-name> debug </param-name> <param-value> true </param-value> </init-param> </servlet> <Servlet-Mapping> <Servlet-Mapping> <Servlet-name> DWR-Invoker </Servlet-Name> <URL-PATTERN>/DWR/*</url-pufter> </servlet-mapping> <Servlet-Mapping> <servlet-name> dwr-inker1 </Servlet-name> <URL-Muster>/dwr1/*</url-puster> </Servlet-Mapping>
In diesem Fall können wir Berechtigungen gemäß J2EE -Sicherheit kontrollieren und verschiedene Rollen für verschiedene URLs hinzufügen.
2. DWR -Verwendung
1. Aufrufen der Java -Methode ohne Rückgabewert und Parameter
1.1. Konfiguration von dwr.xml
<dwr> <duls> <create create = "new" javaScript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include methode = "testMethod1"/> </create> </duld> </dwr>
Tags enthalten Dinge, die dem Zugriff auf JavaScript ausgesetzt werden können.
Das Tag gibt die Java -Klasse an, auf die in JavaScript zugegriffen werden kann, und definiert, wie DWR Instanzen der Klasse erhalten soll, um abgelegen zu sein. Das Attribut Creator = "New" gibt die Generierungsmethode der Java -Klasse -Instanzen an. Neue bedeutet, dass DWR den Standardkonstruktor der Klasse aufrufen sollte, um die Instanz zu erhalten. Andere umfassen Federmethoden, die in die IOC -Containerfeder integriert werden können, um die Instanz usw. zu erhalten usw. Das Attribut javaScript = "TestClass" gibt den vom JavaScript -Code verwendeten Namen an, um auf das Objekt zuzugreifen.
Das Tag gibt den Java -Klasse -Namen an, der JavaScript ausgesetzt werden soll.
Das Tag gibt die Methode an, die JavaScript ausgesetzt werden soll. Wenn nicht angegeben, werden alle Methoden offengelegt.
Das Tag gibt die Methode an, um Zugriff zu verhindern.
1.2. In JavaScript aufgerufen
Stellen Sie zunächst JavaScript -Skripte ein
<script src = 'dwr/interface/testclass.js'> </script> <script src = 'dwr/engine.js'> </script> <script src = 'dwr/util.js'> </script>
Unter diesen wird testclass.js automatisch von DWR basierend auf der Konfigurationsdatei generiert, und Engine.js und util.js sind Skriptdateien, die mit DWR geliefert werden.
Zweitens schreiben Sie eine JavaScript -Funktion, die eine Java -Methode aufruft
Funktion CallTestMethod1 () {TestClass.TestMethod1 ();}2. Rufen Sie die Java -Methode mit einfachem Rückgabewert auf
2.1. DWR.XML -Konfiguration
Die gleiche Konfiguration wie 1.1
<dwr> <duls> <create create = "new" javaScript = "testclass"> <param name = "class" value = "com.dwr.TestClass"/> <include methode = "testMethod2"/> </create> </duld> </dwr>
2.2. In JavaScript aufgerufen
Stellen Sie zunächst JavaScript -Skripte ein
Zweitens schreiben Sie eine JavaScript -Funktion, die eine Java -Methode und eine Rückruffunktion aufruft, die den Rückgabewert empfängt.
Funktion CallTestMethod2 () {TestClass.TestMethod2 (CallbackForTestMethod2);} Funktion CallbackForforsESTMethod2 (Daten) {// wobei der Rückgabewert des Datums die Methode empfängt // Der Rückgabewert kann hier verarbeitet und angezeigt werden usw. usw. ("Der Rückgabewert ist" + data);}wobei CallbackOstestMethod2 eine Rückruffunktion ist, die den Rückgabewert empfängt
3. Rufen Sie die Java -Methode mit einfachen Parametern auf
3.1. Konfiguration von dwr.xml
Die gleiche Konfiguration wie 1.1
<dwr> <duls> <create create = "new" javaScript = "testclass"> <param name = "class" value = "com.dwr.TestClass"/> <include methode = "testMethod3"/> </create> </duld> </dwr>
3.2. In JavaScript aufgerufen
Stellen Sie zunächst JavaScript -Skripte ein
Zweitens schreiben Sie eine JavaScript -Funktion, die eine Java -Methode aufruft
Funktion CallTestMethod3 () {// Definieren Sie die Parameter -VAR -Daten, die an die Java -Methode übergeben werden sollen.4. Rufen Sie die Java -Methode auf
4.1. DWR.XML -Konfiguration
<dwr> <ding> <create Creator = "new" javaScript = "testclass"> <param name = "class" value = "com.dwr.TestClass"/> <include methode = "testMethod4"/> </create> <convert c match = "com.dwr.testBean"> <paramname = "value =" value = "userername" userername "userername", "username", "userername", "username", "username", "userername", "username", "username", "userername", "userername", "userername", "kennzeichnungen"/convert> </convert> </convert;
Tags sind dafür verantwortlich, Klassen und Methoden für Web -Fernbedienungen aufzudecken, während Tags für die Parameter und Rückgabetypen dieser Methoden verantwortlich sind. Die Funktion des Konvertitenelements besteht darin, DWR mitzuteilen, wie Datentypen zwischen serverseitiger Java-Objektdarstellung und serialisiertem JavaScript konvertiert werden. DWR passt automatisch einfache Datentypen zwischen Java und JavaScript -Darstellungen an. Diese Typen umfassen Java -native Typen und ihre jeweiligen eingekapselten Klassenpräparate sowie String-, Datums-, Array- und Sammelstypen. DWR kann auch JavaBeans in JavaScript -Darstellungen umwandeln, erfordert jedoch aus Sicherheitsgründen eine explizite Konfiguration, und die Tags erfüllen diese Funktion. Das C -Attribut gibt die Konvertierungsmethode an, um die Javabäer -Benennungsspezifikation zu verwenden, das Attribut match = "" com.dwr.testbean ", der den Namen des zu konvertierenden Javabäer -Attributs angibt, und das Tag gibt das zu konvertierende Javabäe -Attribut an.
4.2. In JavaScript aufgerufen
Stellen Sie zunächst JavaScript -Skripte ein
Zweitens schreiben Sie eine JavaScript -Funktion, die eine Java -Methode und eine Rückruffunktion aufruft, die den Rückgabewert empfängt.
wobei CallbackOstestMethod4 eine Rückruffunktion ist, die den Rückgabewert empfängt
5. Rufen Sie die Java -Methode mit JavaBäischen Parametern auf
5.1. DWR.XML -Konfiguration
<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value="com.dwr.TestClass" /><include method="testMethod5"/></create><convert c match="com.dwr.TestBean"> <param name="include" value="username,password" /></convert></allow></dwr>
5.2. In JavaScript aufgerufen
Stellen Sie zunächst JavaScript -Skripte ein
Zweitens schreiben Sie eine JavaScript -Funktion, die eine Java -Methode aufruft
Funktion CallTestMethod5 () {// Definieren Sie die Parameter var -Daten, die an die Java -Methode übergeben werden sollen; // Konstruieren Sie den Parameter, Datum ist tatsächlich ein Objektdaten = {Benutzername: "Benutzer", Passwort: "Passwort"} testClass.TestMethod5 (Daten);}Und fügen Sie DWR.xml das folgende Konfigurationssegment hinzu
<Signaturen> <! [CDATA [import Java.util.List; importieren com.dwr.testclass; com.dwr.testbean;
3. Aus dem obigen Punkt können wir feststellen, dass DWR für den Fall, in dem der Rückgabewert der Java -Methode die Liste (SET) ist, in ein Objektarray umwandelt und ein JavaScript übergibt. Für den Fall, in dem der Rückgabewert der Java -Methode MAP ist, konvertiert DWR ihn in ein Objekt, wobei das Objektattribut der Schlüsselwert der ursprünglichen Karte ist und der Attributwert der entsprechende Wert der ursprünglichen Karte ist.
4. Wenn die Parameter der Java -Methode Liste (SET) und MAP sind, sollte JavaScript auch entsprechende JavaScript -Daten konstruieren, die nach drei Arten von Dingen in Java übergeben werden.