DWR - это структура, которая просто способна вызывать методы Java непосредственно в JavaScript без необходимости писать много кода JavaScript. Его реализация основана на AJAX и может достичь обновленного эффекта.
В Интернете есть много примеров DWR, но большинство из них - просто вызовы некоторого метода. Эта статья представляет DWR только на уровне использования и не включает в себя больше технологий и дизайна. Цель состоит в том, чтобы позволить начинающим быстро узнать, как в JavaScript называются различные методы Java.
1. Статья DWR на конфигурации web.xml
1. Минимальное соответствие
<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. Когда мы хотим, чтобы тестовая страница (с использованием режима отладки/тестирования), сгенерированной DWR, мы можем добавить ее в конфигурацию сервлета.
<Init-param> <param-name> отладка </param-name> <param-value> true </param-value> </init-param>
Этот параметр dwr является ложным по умолчанию. Если вы выберете True, мы увидим каждый класс DWR, который вы развертываете через http: // localhost: port/app/dwr. И вы можете проверить, работает ли каждый метод кода Java нормально. По соображениям безопасности вы должны установить этот параметр в False в формальной среде.
3. Конфигурация нескольких файлов dwr.xml
Там может быть несколько ситуаций, мы перечислим их один за другим. Один сервл, несколько файлов конфигурации DWR.xml; Несколько сервлетов, каждый сервлет соответствует одному или нескольким файлам конфигурации dwr.xml.
3.1. Один сервлет, несколько файлов конфигурации dwr.xml
<Servlet> <vervlet-name> dwr-invoker </servlet-name> <servlet-class> uk.ltd.getahead.dwr.dwrservlet </servlet-class> <init-param> <may-name> config-1 </param-name> <param-value> web-inf/dwr1.xml </param-value> </init-param> <int-param> <int-param> <int-param> <int-param> <int-param> <int-param> <int-param> <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> </servlet>
В этой конфигурации значение param-name должно начинаться с config. Param-name может иметь> = 0. Если не будет прочтет param-name, Web-inf/dwr.xml будет прочитана. Если существует более нулевого имени параметров, файл Web-Inf/DWR.xml не будет прочитал.
3.2. Несколько сервлет, каждый сервлет соответствует одному или нескольким dwr.xml
<servlet> <vervlet-name> dwr-invoker </servlet-name> <verlet-class> uk.ltd.getahead.dwr.dwrservlet </servlet> </servlet> <servlet> <servlet-name> dwr-nvoker1 </servlet-mame> <verlet-class> uk.ltd.getahead.dwr.dwr.dwrservelce </servlet-mame> <verlet-class> uk.ltd.getahead.dwr.dwr.dwrservlect </servlet-class> uk.ltd.getahead.dwr.dwr.dwr.dwrservlect> <param-name> config-admin </param-name> <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-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> dwr-invoker1 </servlet-name> <Url-pattern>/dwr1/*</url-pattern> </servlet-mapping>
В этом случае мы можем контролировать разрешения в соответствии с безопасностью J2EE и добавлять разные роли для различных URL -адресов.
2. Использование DWR
1. Вызов метода Java без возврата и параметров
1.1. Конфигурация DWR.xml
<dwr> <alluding> <create creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod1"/> </create> </allow> </dwr>
Теги включают вещи, которые могут быть подвергнуты доступу JavaScript.
Тэг указывает класс Java, к которому можно получить доступ в JavaScript, и определяет, как DWR должен получить экземпляры класса, чтобы быть удаленным. Атрибут Creator = "New" указывает метод генерации экземпляров класса Java. Новое означает, что DWR должен вызвать конструктор по умолчанию класса, чтобы получить экземпляр. Другие включают в себя пружинные методы, которые могут быть интегрированы с пружиной контейнера IOC, чтобы получить экземпляр и т. Д. Атрибут javaScript = "testclass" указывает имя, используемое кодом JavaScript для доступа к объекту.
Тэг указывает имя класса Java, которое будет подвергаться JavaScript.
Тэг указывает метод, который будет подвергаться воздействию JavaScript. Если не указано, все методы будут раскрыты.
Тэг указывает метод для предотвращения доступа.
1.2. Вызвано в JavaScript
Во -первых, ввести сценарии JavaScript
<script src = 'dwr/interface/testclass.js'> </script> <script src = 'dwr/engine.js'> </script> <script src = 'dwr/util.js'> </script>
Среди них TestClass.js автоматически генерируется DWR на основе файла конфигурации, а Engine.js и util.js - это файлы скриптов, которые поставляются с DWR.
Во -вторых, напишите функцию JavaScript, которая вызывает метод Java
Function calltestmethod1 () {testclass.testmethod1 ();}2. Вызовите метод Java с простым возвратным значением
2.1. конфигурация DWR.xml
Та же конфигурация, что и 1.1
<dwr> <alluding> <create creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod2"/> </create> </allow> </dwr>
2.2. Вызвано в JavaScript
Во -первых, ввести сценарии JavaScript
Во -вторых, напишите функцию JavaScript, которая вызывает метод Java и функцию обратного вызова, которая получает возвращаемое значение.
Функция calltestmethod2 () {testclass.testmethod2 (callbackfortestmethod2);} function callbackfortestmethod2 (data) {// где возвратное значение даты получает метод // возвращаемое значение может быть обработано и отображено здесь и т. Д.где Callbackfortestmethod2 - это функция обратного вызова, которая получает возвращаемое значение
3. Вызовите метод Java с простыми параметрами
3.1. Конфигурация DWR.xml
Та же конфигурация, что и 1.1
<dwr> <alluding> <create creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod3"/> </create> </allow> </dwr>
3.2. Вызвано в JavaScript
Во -первых, ввести сценарии JavaScript
Во -вторых, напишите функцию JavaScript, которая вызывает метод Java
Функция CallTestMethod3 () {// Определить данные VARATER, которые будут переданы методу Java; // Создание параметра DATA = "TEST String"; TestClass.TestMethod3 (data);}4. Позвоните в метод Java, который возвращает Javabean
4.1. конфигурация DWR.xml
<dwr> <ally> <create creator = "new" javascript = "testClass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod4"/> </create> <convert c match = "" com.dwr.testbean "> <param name =" include "value =" userse, пароль "/> <//do vally value =" userme, desvert> <//value "value =" user userme "/> <//vally" value = "value =" uspal
Теги отвечают за разоблачение классов и методов, используемых для веб -пульсов, в то время как теги отвечают за параметры и типы возврата этих методов. Функция преобразования элемента состоит в том, чтобы сообщить DWR, как преобразовать типы данных между представлением объекта Java на стороне сервера и сериализованным JavaScript. DWR автоматически настраивает простые типы данных между Java и JavaScript. Эти типы включают нативные типы Java и их соответствующие инкапсулированные представления класса, а также строки, дату, массив и типы сбора. DWR также может преобразовать Javabeans в представления JavaScript, но по соображениям безопасности это требует явной конфигурации, и теги выполняют эту функцию. Атрибут C указывает метод преобразования для использования спецификации именования Javabean, атрибут Match = "" com.dwr.testbean "указывает имя Javabean, которое будет преобразовано, а тег указывает атрибут Javabean, который будет преобразован.
4.2. Вызвано в JavaScript
Во -первых, ввести сценарии JavaScript
Во -вторых, напишите функцию JavaScript, которая вызывает метод Java и функцию обратного вызова, которая получает возвращаемое значение.
где Callbackfortestmethod4 - это функция обратного вызова, которая получает возвращаемое значение
5. Позвоните в метод Java с параметрами Javabean
5.1. конфигурация DWR.xml
<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. Вызвано в JavaScript
Во -первых, ввести сценарии JavaScript
Во -вторых, напишите функцию JavaScript, которая вызывает метод Java
Function calltestmethod5 () {// определить параметр var данных, которые будут переданы методу Java; // Создание параметра, дата на самом деле является объектом data = {username: «пользователь», пароль: «пароль»} testclass.testmethod5 (data);}И добавьте следующий сегмент конфигурации в dwr.xml
<Cignatures> <! [cdata [import java.util.list; import com.dwr.testclass; import com.dwr.testbean; testclass.testmethod7 (map <string, testbean>);]]> </signature>
3. Для случая, когда возвращаемое значение метода Java является MAP, DWR преобразует его в объект, где атрибут объекта является значением клавиши исходной карты, а значение атрибута является соответствующим значением исходной карты.
4. Если параметры метода Java являются списком (SET) и MAP, JavaScript также должен построить соответствующие данные JavaScript для прохождения Java в соответствии с тремя типами вещей.