190 likes | 375 Views
DWR. Ангел Груев. Дриймикс ООД. www.dreamix.eu. http://academy.devbg.org. Съдържание. Какво е DWR Вграждане в уеб приложение web.xml dwr.xml Convertors, Creators, Signature Помощни инструменти Анотации и DWR. Какво е DWR. Direct Web Remoting http://getahead.ltd.uk/dwr
E N D
DWR АнгелГруев Дриймикс ООД www.dreamix.eu http://academy.devbg.org
Съдържание Какво е DWR Вграждане в уеб приложение web.xml dwr.xml Convertors, Creators, Signature Помощни инструменти Анотации и DWR
Какво е DWR Direct Web Remoting http://getahead.ltd.uk/dwr Open Source Java библиотека Apache License, версия 2 RPC с Ajax – лесно и прозрачно за програмиста Развитие: Текуща стабилна версия – 1.1.3 В процес на разработване - 2.0
Концепция DWR се състои от две части: Сървър: Java сървлет, който обработва заявките, и връща резултат Клиент: JavaScript, който изпраща заявки и обновява динамично страницата JavaScript прокси Автоматично създадено от DWR Клас на сървъра е достъпен в клиента
Вграждане Състои се основно от 4 стъпки dwr.jar се слага в /WEB-INF/libs dwr сървлета се описва в web.xml Създаване на dwr.xml, който трябва да се намира в WEB-INF/ Вмъкване на javascript файловете в jsp страницата Debug страница
web.xml <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class> uk.ltd.getahead.dwr.DWRServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> DWR Servlet path
dwr.xml <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr> <allow> <create creator="..." javascript="..."/> <convert converter="..." match="..."/> </allow> <signatures> ... </signatures> </dwr>
Creators <allow> <create creator="..." javascript="..." scope="..."> <param name="..." value="..."/> <auth method="..." role="..."/> <exclude method="..."/> <include method="..."/> </create> ... </allow> Creators: scripted spring jsf new struts pageflow
Converters Служат за преобразуване на параметрите на методите Много от обектите нямат нужда от описане на converter Всички примитивни типове и техните съответни класове (int, Integer ...) java.lang.String, java.util.Date Масиви и колекции от горните типове DOM обекти (като Element и Document) от DOM, XOM, JDOM and DOM4J
Converters (2) Когато искаме да разрешим преобразуването на наши JavaBeans <convert converter="bean" match="your.full.package.BeanName"/> <convert converter="bean" match="your.full.package.*"/>
Converters(3) public class Remoted { public void setPerson(Person p) { // ... } } public class Person { public void setName(String name) { ... } public void setAge(int age) { ... } // ... } JavaScript: var p = { name:"Fred", age:21 }; Remoted.setPerson(p);
Signatures Използват се за да дефинират типовете използвани в колекции (когато не са определени) Съдържа Integer обекти public class Check { public void setLotteryResults(List nos){...} } <signatures> <![CDATA[ import java.util.List; import com.example.Check; Check.setLotteryResults(List<Integer> nos); ]]> </signatures>
util.js Предоставен от DWR Предлага няколко метода за улесняване на клиентския код (javascript) <script type='text/javascript' src='<DWRServletPAth>/util.js'></script> • $() • addOptions and removeAllOptions • addRows and removeAllRows • onReturn • selectRange • toDescriptiveString • useLoadingMessage
Анотации Новата версия на DWR улеснява ползването чрез анотации Няма нужда от dwr.xml Трябва да се използва друг DWR сървлет @RemoteProxy – указва, че даден клас ще е достъпен от клиента @RemoteMethod – указва ,че даден метод ще е достъпен от клиента @DataTransferObject – указва, че даден bean е позволено да се преобразува (convert) @RemoteProperty – указва кои атрибути ще са достъпни при преобразуването
Анотации - web.xml <servlet> <servlet-name>DWR-Servlet</servlet-name> <servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class> <init-param> <param-name>classes</param-name> <param-value> com.example.RemoteFunctions, com.example.RemoteBean </param-value> </init-param> </servlet>
Анотации – java класове @RemoteProxy(name="Functions") public class RemoteFunctions { @RemoteMethod public int calculateFoo() {...} } @DataTransferObject public class Foo { @RemoteProperty private int foo; public int getFoo() {return foo;} @RemoteProperty public int getBar() {return foo * 42;} }
Заглавие на лекцията Въпроси?