dwr学习笔记
发布时间:2020-12-15 21:59:40 所属栏目:百科 来源:网络整理
导读:1.dwr的配置 ①引入两个jar,commons-logging-1.1.1和dwr ②配置dwr servlet,即修改web.xml,添加以下内容 servlet display-nameDWR Servlet/display-name servlet-namedwr-invoker/servlet-name servlet-classorg.directwebremoting.servlet.DwrServlet/serv
1.dwr的配置
①引入两个jar,commons-logging-1.1.1和dwr ②配置dwr servlet,即修改web.xml,添加以下内容 <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>③自己写一个dwr.xml,放在WEB-INF下,实例如下 <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd"> <dwr> <allow><!-- 与struts2的action类似 --> <create creator="new" javascript="ccc"> <param name="class" value="com.bjsxt.test.DwrHello" /> </create> </allow> </dwr>其中,<allow>标签中包括暴露出来可以给javascript访问的内容。<create>标签中指定js可以访问的java类,creator="new"指定java类实例的生成方式,new表示dwr应该调用类的无参构造函数来获得实例。其它的还有spring方式。 <include>标签指定要公开给js的方法,不指定的话就公开所有方法。 ④在jsp页面引入两个js,一个是自定义的,另一个是engine.js <script type='text/javascript' src='/dwr_001/dwr/interface/ccc.js'></script> <script type='text/javascript' src='/dwr_001/dwr/engine.js'></script> <!--dwr_001是项目名称,注意dwr_001前边的斜杠不能丢,否则访问不到-->实际上这两个js文件是dwr servlet响应回来的(因为dwr servlet中拦截的是/dwr/*,访问http://localhost:8080/dwr_001/dwr可以得到这两个js),项目中实际并不存在这些路径,没有dwr这个文件夹。 在jsp页面可以写一个js方法 function check(){ //dwr 在js中直接调用java代码 ccc.add(1,2,function(result){ //所有dwr代理类对象的方法最后一个参数都是获取返回值的callback(回调)函数 //这解释了为什么DwrHello中add方法定义了两个参数,而dwr使用时加了一个函数 alert(result); }) } //在js中,check可以直接调用DwrHello的add方法,而没有通过ajax向后台获取该方法,这就是js中直接调用java代码的含义所在。使用ajax就比较麻烦,需要写url,path等这个回调函数callback是怎么回事? 如DwrHello中的add方法为 public int add(int a,int b){ return a+b; } //那么callback就表示再次调用add方法,而这个add方法会返回一个数值。result就表示返回的值。2.dwr是easy ajax for java,可以在js中直接调用java.本质上就是ajax和反射机制。它可以将java对象和json对象互相转换,而不再需要json,简化了很多。 3.dwr触发一个函数调用时,会发送一个ajax请求,并且每次请求后台的java类都会创建一个新的对象(可以看出不是单例),在jsp中导入两个js文件,其中/interface路径下的js文件是和后台的java类相似的json对象,这js不是我们所写,而是由dwr生成。 4.用dwr进行简单的用户名重复验证,如下用简单例子说明,用户名只要不是zs,都可以注册 public int checkName(String name){ if("zs".equals(name)){ return 0; }else{ return 1; } }而在jsp页面可以这么写 function check(name){ ccc.checkName(name.value,function(flag){ <!--先定义一个js函数,然后在该js函数内调用java方法,该处扔使用了回调函数--> var msg = document.getElementById("flag"); if(flag==0){ msg.innerHTML = "该用户名不可用"; }else if(flag==1){ msg.innerHTML = "该用户名可用"; } }) } <input type="text" onclick="check(this);"><font id="flag" color="red"></font>从而达到验证目的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |