DWR的简单使用
2016-01-17 12:59
204 查看
简介:dwr是一种开源的封装的ajax框架,可以在前台页面直接调用后台的java函数。
1.必须jar包:
dwr.jar 以及 common-logging.jar 放置在 WebRoot/WEB-INF/lib下。jar包: http://pan.baidu.com/s/1bfRcFs
2.配置dwr环境之web.xml:/WebRoot/WEB-INF/web.xml
先上一段代码:<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>classes</param-name> <param-value>java.lang.Object</param-value> </init-param> <init-param> <param-name>config-1</param-name> <param-value>/WEB-INF/classes/dwr/dwr_core.xml</param-value> </init-param> <init-param> <param-name>config-2</param-name> <param-value>/WEB-INF/classes/dwr/dwr_xt.xml</param-value> </init-param> <init-param> <param-name>config-3</param-name> <param-value>/WEB-INF/classes/dwr/dwr_wf.xml</param-value> </init-param> <init-param> <param-name>config-4</param-name> <param-value>/WEB-INF/classes/dwr/dwr_xm.xml</param-value> </init-param> <init-param> <param-name>config-5</param-name> <param-value>/WEB-INF/classes/dwr/dwr_gys.xml</param-value> </init-param> <init-param> <param-name>config-6</param-name> <param-value>/WEB-INF/classes/dwr/dwr_zj.xml</param-value> </init-param> <init-param> <param-name>config-7</param-name> <param-value>/WEB-INF/classes/dwr/dwr_wt.xml</param-value> </init-param> <init-param> <param-name>config-8</param-name> <param-value>/WEB-INF/classes/dwr/dwr_ht.xml</param-value> </init-param> <load-on-startup>100</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
其中<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
中的值,可以查看dwr.jar中DWrServlet.class的路径。
3.配置dwr环境之dwr.xml之dwr_gys.xml:(上面截图也可以看到配置有多个dwr.xml文件,选其一代码少的来讲述)
先上份完整代码( dwr_gys.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> <allow> <convert match="java.lang.StringBuffer" converter="bean"></convert> <!--公共操作 登录账号唯一性检查 generateDlh:供应商注册 产生供应商操作员登录号--> <create javascript="GysEntity" creator="spring"> <param name="beanName" value="gys.gysEntity" /> <include method="generateDlh" /> <include method="isZzjgdmhRepeat" /> <include method="isGsmcRepeat" /> </create> <create javascript="gysshFacade" creator="spring"> <param name="beanName" value="gys.gysshFacade"></param> <include method="getSpsxZt"/> <include method="syncWwzcFiles" /> </create> </allow> </dwr>
dwr_gys.xml 的dtd 地址可在dwr.jar中查看dwr.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.xml是dwr的核心配置文件,主要的标签有:
<converter>、<convert>、<create>这三个标签。
1
<converter>标签是dwr中内置的转换器。我们也可以使用自己写的转换器,不过dwr提供的转换器已经足够了,所以这个标签,一般不会自己去写。
2
<convert>标签是将converter中定义的转换器映射到的具体类型
<convert match="java.lang.StringBuffer" converter="bean"></convert> <!-- convert就是配置哪些java bean是可以通过dwr转换的,其包含converter,match属性,coverter就是选择转换的converter由init中配置,match就是可以转换的java bean -->
3 标签是dwr中重要的标签,用来描述 java(服务器端) 与 javascript (客户端)的交互方式。
其中,creator和javascript是必须属性,其他可以忽略。creator包含有以下几个值:
new:Java用“new”关键字创造对象
none:它不创建对象 (v1.1+)
scripted:通过BSF使用脚本语言创建对象,例如BeanShell或Groovy
spring:通过Spring框架访问Bean
struts:使用Struts的FormBean (v1.1+)
jsf:使用JSF的Bean (v1.1+)
pageflow:访问Weblogic或Beehive的PageFlow (v1.1+)
ejb3:使用EJB3 session bean (v2.0+)
[此处使用的是与Spring整合]
<create javascript="GysEntity" creator="spring"> <param name="beanName" value="gys.gysEntity" /> <!-- 加include可以具体指定java类中关的方法,不加则默认类中全部为public的方法 --> <include method="generateDlh" /> <include method="isZzjgdmhRepeat" /> <include method="isGsmcRepeat" /> </create>
spring.xml 配置文件中的bean→id,对应dwr.xml 中的param→value
dwr.xml 中的create→javascript,对应jsp/html 中引用的js文件
4.jsp/html 之javascript代码(因其js代码少,故选用的是SelectFbxxFacade.js来展示):
var id = document.getElementById("blb").value; var flag=false; DWREngine.setAsync(false); SelectFbxxFacade.getDmbzById(id,function(dmbz){ //dmbz对应着java方法的返回值 var data = dmbz.substr(0,8); if(data==bfl_hw){//所选择采购分类为货物 if(!checkFormItem(myform.cgsl, "N" ,9, 0,5,"采购数量" )){ flag=true;return false;} } });//调用java方法,第二个参数是回调函数(也可写在外面) DWREngine.setAsync(true); if(flag){ return false; }
其中:
<!-- DWREngine.engine.setAsync(false); //false为同步,true(默认)为异步 -->
java方法:
在你项目主目录下输入/dwr,可以查看该项目下的所有dwr文件,并且可以测试。
相关文章推荐
- csdn和博客园对比
- Entity Framework 6 Recipes 2nd Edition(9-1)译->用Web Api更新单独分离的实体
- Linux下的字符界面扫雷游戏
- 机器学习实战笔记——利用KNN算法改进约会网站的配对效果
- 分享自己写的一个贪吃蛇的游戏(Linux)
- 双击和多击事件的实现
- 程序员社交宝典
- 周末在家
- 配置阿里云作为yum 源
- 分享一个蛋疼的俄罗斯方块小游戏
- C语言中怎么将变量名转换为字符串 -转
- UITableView方法的执行顺序
- Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flash Player-转
- ubuntu输入法的安装
- ice 嵌入式
- /usr/bin/ld: skipping incompatible -转
- 蓝桥杯之基础练习 闰年判断
- Android四大组件--Broadcast Receiver具体解释
- NSString+URLEncoding
- C# winfrom 窗体的StartPosition 属性