dwr可以让我们在浏览器中使用javascript调用服务器端的java代码。
dwr主要包括两部分:
运行在客户端的js代码发送请求到服务器端;
服务器端的dwr servlet处理请求,并将结果和数据返回到客户端。
有一张关于dwr很精确的图:
DWR简单配置:
1.首先dwr.jar是必须的。下载后放在/WEB-INF/lib目录下。
2.在/WEB-INF/目录下,增加一个dwr.xml文件。格式如下:
<dwr> <allow> <create creator="new" javascript="JDate"> <param name="class" value="java.util.Date"/> </create> <create creator="spring" javascript="winnerService"> <param name="beanName" value="dwrWinnerService"/> </create> </allow> </dwr>
根节点是dwr,我在第一次配置这个dwr.xml的时候,忽略掉了,根结点直接就是allow,然后就一直报错,很脑残的错误。所以在这里也稍微提醒一下。
create的creator属性常用的为new和spring。new就是每次调用的时候,都会实例化一个新的对象来处理请求;spring就是从Spring的配置文件中取得bean。
以JDate为例,javascript属性是DWR动态为服务器端的Date类(java)生成一个相应的客户端JDate类(Javascript)。JDate可以使用Date的所有public方法。
3. 配好了dwr.xml,接下来配置/WEB-INF/web.xml。我们需要在web.xml中增加如下<servlet>和<servlet-mapping>:
<servlet> <servlet-name>dwr-invoker</servlet-name> <display-name>DWR Servlet</display-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>
这个servlet就是用来处理dwr发送的请求。
4. dwr访问
这时候,如果你已经在本地启动了你的应用(假设是在tomcat中),可以访问如下URL:
http://localhost:8080/[YOUR-APP-NAME]/dwr
你会看到在dwr.xml配置的两个类.点击JDate,可以看到所有可以调用的方法,并且可以点击,在按钮的右边看到点击的反馈.
在这个页面的上方,你还会看到如下代码:
<script src='/[YOUR-APP-NAME]/dwr/interface/JDate.js'></script> <script src='/[YOUR-APP-NAME]/dwr/engine.js'></script>
当你的页面需要使用JDate时,就必须把上面的script代码片段放到你的页面中。
<script type="text/javascript"> JDate.toString({ callback: function(str) { alert(str); } }); </script>
我们就可以使用JDate了.
这里主要是为了介绍一下dwr最基本的使用,那么dwr的一些其他能力,比如超时处理和错误处理,就不在这里说了.