dwr前后端交互的一个完整demo(新手)

来源:互联网 发布:单片机gsm模块有哪些 编辑:程序博客网 时间:2024/06/06 03:41

DWR:就是一个可以让前台直接干后台活,调用后台类和方法的工具。想了解更详细请自行百度

这段时间项目中有用到这个技术,所以一边练习一遍操作,用dwr最基本的方法,实现了一个简单的dwr前后台交互。过程如下:

1、下载DWRjar包丢到lib里然后引入

2、配置dwr.xml文件

其中javascript中放的是在js中所用到的类名

param放对应java文件类名,如果没用到多个类就省事点取相同名字好了

<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"><dwr><allow><!-- 通过商品ID查询商品重量 --><create javascript="selectWeightById" creator="spring"><param name="beanName" value="selectWeightById"/></create></allow>


3、创建后台java文件

我这里后台用的是连接池,因为是练习挺简单的查询操作,所以没有分MVC了,别的连接数据库的方法都一样,用你熟悉的就好了。

public class WeightSelect extends JdbcTemplate{public int  selectWeight (int proId,HttpServletRequest httpServletRequest){String sql ="select product_weight from product where product_id="+proId;return this.queryForInt(sql);}}

 

4、配置applicationContext.xml(可省略)

这个文件是Bean工厂spring框架的,你也可以不用这个而用注解注入啥的。

class放的是第三步中类的位置。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns:aop="http://www.springframework.org/schema/aop"     xmlns:tx="http://www.springframework.org/schema/tx"     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><bean id="selectWeightById" class="com.shoponline.daoimpl.front.iptables.WeightSelect" autowire="byName"></bean></beans>

 

5、前台

前台JS调用这个方法挺简单,唯一一点不同的是前台调用后需要给他一个回调函数,具体格式就是:类.方法(参数1,参数2....,回调函数);

前后台的参数个数需要一致,不然会报参数错误,httpServletRequest不算参数。

引入的前两个JS文件是通用的,第三个JS是刚才配置的JS,有些教程说这个能自动引入,我的不好使,也不知道为啥,反正手动敲也一样就是了。

<script src='/dwr/engine.js'></script><script src='/dwr/util.js'></script><script type='text/javascript' src='/dwr/interface/selectWeightById.js'></script>var weight=0;selectWeightById.selectWeight(proId,{                callback:function(data){if (data!=0) {weight=data;}else {weignt=0;}}});alert(weight);


所需要的JAR包忘贴了,附上:

http://download.csdn.net/download/weixin_38894231/10045307


遇到个坑记录下,dwr的回调不一定是立刻执行。
如果回调函数中有赋值,而后立马又使用了这个值的话,很容易报空值。
所以一定要注意DWR的执行时间。


又遇到一个坑,dwr后台中的方法,不能重名,参数不同都不行。

如果重名,虽然前台能传到后台来并且执行没问题,但是后台传前台时回调函数不能执行。


阅读全文
0 0
原创粉丝点击