简介:DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在web服务器上的JAVA函数,就像它就在浏览器里一样。
1、导入相关jar包,maven项目
<dependency> <groupId>org.directwebremoting</groupId> <artifactId>dwr</artifactId> <version>2.0.1</version> </dependency>
非maven项目可到DWR官网下载相关包,放置在lib下
2、在web.xml写相关配置
<!-- dwr 配置 --> <servlet> <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> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>classes</param-name> <param-value>java.lang.Object</param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
3、新建dwr.xml
放置在跟web.xml同级目录下
内容如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"> <dwr> <init></init> <allow> <create javascript="dictManager" creator="spring"> <param name="beanName">dictManager</param> <include method="getByCode" /> </create> <create javascript="ecoPlatManager" creator="spring"> <param name="beanName">ecoPlatManager</param> <include method="getPlatID" /> <include method="getByNo" /> <exclude method="getRandom" /> </create> </allow> </dwr>
简单解析:javascript="dictManager" dictManager到了jsp使用方法时会用到
creator="spring" 对象新建的方式,常见的还有 creator="new"
include是类中能被调用的方法,若什么都没写则表示全部都开放
<exclude>就是设置不允许被调用的
4.jsp页面中使用
首先配置script
<script type='text/javascript' src="${pageContext.request.contextPath}/dwr/interface/dictManager.js"></script> <script type='text/javascript' src="${pageContext.request.contextPath}/dwr/engine.js"></script> <script type='text/javascript' src="${pageContext.request.contextPath}/dwr/util.js"></script>
此处dictionaryTypeManager.js就是刚刚在dwr.xml中配置的
<script type="text/javascript"> function checkCode() { var code = document.getElementById('code').value; if(code=='') return; dictManager.getByCode(code, { callback:function(dataFromServer) { if(dataFromServer == null) { document.getElementById("msg").innerHTML=""; }else{ document.getElementById("msg").innerHTML="字典类型标识已经存在!"; document.getElementById("code").value=''; } } }); } </script>
dictManager.java
@Service("dictManager") public interface DictManager { public DictionaryType getByCode(String code); }
具体实现写在实现类里