DWR使用手记
2006-03-01 18:12
507 查看
DWR使用手记 |
前段时间想做个东西玩玩,又想学点新的技术,就想起来用DWR(Direct Web Remoting)。把东西做完之后,想想DWR用起来还是很方便的,DWR主要是为了方便javascript调用java class方法,在中间起了一个协调作用,这个功劳主要取决于apache的开源API-bsf.jar。DWR可以声明哪些类可以供javascript调用,可以细到只能调用哪些方法。目前DWR还支持调用spring beans。总结一下使用过程: 1.在WEB.XML中配置DWRServlet: <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> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> 上面配置debug=true后,我们就可以通过http://localhost/webapp/dwr/查看,当前有哪些类可以供javascript调用,同时还可以对类中方法进行测试.对于DWRServlet还有一些参数可以自行设置,如logLevel设置日志级别等.具体可以参照源码. 2 DWR默认的读取/WEB-INF/dwr.xml文件,dwr.xml文件配置如下: <dwr> <allow> <init></init> <create creator="new" javascript="Ask"> <param name="class" value="com.test.Ask"/> </create> <convert converter="bean" match="Message"/> <signatures></signatures> </allow> </dwr> 从上面可以看出来dwr.xml文件的基本结构,每个<create>声明一个可供javascript调用的类,javascript="Ask"表明:在javascript中可以用Ask调用类Ask的方法,creator="new"表明每个请求都新建一个Ask实例. 下面的<convert>是:如果在类中把一个对象作为参数(例如A.take(B b)),从javascript调用此方法时,DWR会自动把javascript传过来的参数自动转为对应的bean对象.dwr中已经声明了部分参数类型的自动转换,例如string,int等. 如果我们不想每个请求都新建一个对象,所有请求使用一个实例,我们可以这样配置:(需要bsf.jar) <create creator="script" javascript="Ask"> <param name="language" value="beanshell"/> <param name="script"> <![CDATA[ import com.test.Ask; return Ask.getInstance(); ]]> </param> </create> 同时在<create>中还可以加入<include method="answe"/>一个或多个,用来限制javascript可以调用哪些方法. <signatures>:如果我们在类方法中声明了List这样的类型参数,DWR不知道传过来的值自动转化为什么类型放到List中,这时候我们就需要在这个标签中声明,一般的我们还是建议放到List中的是javabean,不要是Date等这些类型. <signatures> <![CDATA[ import java.util.List; import com.example.Check; Check.setLotteryResults(List<Integer> nos); ]]> </signatures> 3.JAVA类和JAVASCRIPT调用 只举简单例子: public class Ask { public String answer(String question) { return question; } } 页面文件: <script type='text/javascript' src='dwr/engine.js'></script> <script type='text/javascript' src='dwr/util.js'></script> <!--下边这个是必须的--> <script type='text/javascript' src='dwr/interface/Ask.js'></script> <script language="javascript"> function getAnswer() { //用一个function接收返回值 Ask.answer(gotAnswer); } //ans即为返回值 function gotAnswer(ans) { alert(ans); } </script> 总体用起来DWR那是"相--当"灵活的,目前DWR.JAR到了1.1BETA版, 官方网站http://getahead.ltd.uk/dwr/index |
相关文章推荐
- DWR使用手记(二)
- Atlas学习手记(5):使用服务端定时控件TimerControl
- Atlas学习手记(24):使用行为增强用户界面(四):Popup Behavior
- Atlas学习手记(12):使用CascadingDropDown控件
- DWR使用入门教程
- DWR使用方法
- 【OpenStack】vmware workstation使用devstack安装openstack手记
- 在EXT中直接使用DWR
- 转个不错的 Reflector使用手记
- DWR 的 DWRUtil.addRows() 函数的使用
- 使用DWR实现JS调用服务端Java代码
- DWR框架搭建以及使用
- DWR使用小结1——SSH整合DWR
- 【Discuz 7.2】使用手记(头像上传出错、不显示头像等)
- Web端服务器推送技术原理分析及dwr框架简单的使用
- FCKeditor使用手记
- zookeeper客户端curator使用手记
- HA_Xenu1.3.6 使用手记
- 反向ajax与dwr区别和反向ajax使用
- qooxdoo.js使用手记