dwr用起来还是很方便的。
1:去官网下载dwr.jar包。我下载的是dwr-3.0.jar。
复制到WEB-INF/lib目录下。
2:在web.xml文件中添加dwr的信息:
<servlet>
<display-name>DWR Servlet</display-name>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.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>
3:创建dwr的配置文件:dwr.xml
<dwr>
<allow>
<!--dwr3提供的一个日志审核过滤器 ,可去掉,不太清楚原理-->
<filter class="org.directwebremoting.filter.AuditLogAjaxFilter"/>
<!--这是我配置的一个演示类,javascript="Demo" 表示,我可以在页面中用Demo这个名称指向DwrDemo这个java类,类中的方法可以在前台调用-->
<create creator="new"javascript="Demo">
<param name="class"value="com.zzbj.qiao.searchRandom"/>
</create>
<!-- this is a bad idea for live, but can be useful in testing 可取代,不太清楚原理-->
<convert converter="exception"match="java.lang.Exception"/>
<convert converter="bean"match="java.lang.StackTraceElement"/>
</allow>
</dwr>
test映射project.entity.Test这个类。
如果是和sturts搭配使用的,要在struts.xml文件中添加一行代码,因为struts的/*会把所有的请求都有转到action的,这样dwr就不起作用,从web.xml文件中就可以看出来,所以要在struts.xml文件中注明:
<constantname="struts.action.excludePattern"value="/dwr.*"/>
4:上面这些配置好之后,可以打开服务器,访问:http://ip:8080/项目名/dwr,
可以看到有内容和一个映射的类的链接,点进去就能看到所需要的js文件,将三个.js文件都下载下来放到/dwr/路径中或者/dwr/interface/。
//路径问题要注意,js路径有问题无法报错啊,只是不执行,还是ctrl+点击 测验,
<script type='text/javascript' src='js/dwr/test.js'></script>
<script type='text/javascript' src='js/dwr/engine.js'></script>
<script type='text/javascript' src='js/dwr/util.js'></script>
5:开始写调用的js方法了:
function sayHello(name){
window.setInterval("Demo.getHello(name,dwrHandler)",2000);
// Demo.getHello(name,dwrHandler);
}
//这是dwr的一个回调函数,data参数即java方法getHello(String name)的返回值
function dwrHandler(data){
//var value=data; 即可对所选值进行操作。
alert(data); }
</script>
<div id="as"><h1>Hello World!</h1></div>
<script type="text/javascript">
sayHello("w");
</script>
</script>
searchRandom是dwr允许js调用的java类,可以操作数据库,本类只是返回一随机数,2s执行一次,进而在方法dwrHandler中获取值
<bodyleftmargin="0"topmargin="0"onload="MyShow()">
在body加载完就开始执行MyShow这个方法了。