DWR与Spring MVC 集成

以前没有使用过DWR,客户端与服务器端的ajax交互都是使用的jquery,比较简单。昨天把DWR在Spring中的结构大概看了一下,可以有如下步骤将DWR集成到Spring MVC中。

1.导入DWR.jar。

2.web.xml中配置DWR映射

 

  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
  // dwr的映射必须置于全局映射之前,否则会出错
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

3.Spring配置文件中:

首先添加dwr的namespace以及schema location(这里省略.....)

// 开启dwr注解,并设置扫名路径,Spring将会注册该路径下使用@RemoteProxy,@RemoteMethod注解的类 
<dwr:annotation-scan scanRemoteProxy="true" base-package="com.coder.dwr.ajax" />
// 使用dwr:configuration来配置不经Spring管理的Bean
<dwr:configuration>
<dwr:convert type="bean" class="com.doder.domain.User" />
<dwr:convert type="exception" class="java.lang.Exception" />
</dwr:configuration>   
// 定义DwrController,项目开发完毕之后,需将debug设置为false
<dwr:controller id="dwrController" debug="true" />


4.DWR服务类的实现

// 远程代理,会由Spring扫描到并且进行注入管理
@RemoteProxy(creator=SpringCreator.class)
public class DwrService
{
   // 远程方法,供客户端javascript调用
   @RemoteMethod 
   public String sayHello(String name)
   {
     return "hello, " + name;
   }
   @RemoteMethod 
   public String addUser(User user)
   {
      .... // 添加用户操作
      return "user added!"';
   }
}


5.页面调用

首先导入dwr自动生成的两个js文件

js文件路径分别为:

/${yourprojectname}/dwr/engine.js // ${yourprojectname} 为项目名

/${yourprojectname}/dwr/interfact/${yourdwrservice}.js// ${yourprojectname} 为项目名,${yourdwrservice}为DWR服务类的名称(这里为DwrService)

比如项目名为saturdaycoder,DWR服务类名为DwrService

<script type="text/javascript" src="/saturdaycoder/dwr/engine.js" ></script> //小提示:script必须有开始和结束标志:<script>与</script>,如果写成<script />会出错(不会执行)

<script type="text/javascript" src="/saturdaycoder/dwr/interface/DwrService.js" ></script>


javascript代码调用DWR:

<script  type="text/javascript">
var name = "LeBron James"; //偶像啊
function callbackForSayHello(data)
{
alert(data); // 会弹出 "hello, LeBron James"
}
DwrService.sayHello(name, callbackForSayHello); // DWR 调用, 使用简单的参数

// 使用对象参数
// 假设java 实体类中User: name, age, gender;
var user = {
name : "Kevin Durant",
age: 24,
gender : male
};
function callbackForAddUser(data)
{
alert(data); // 如果不出错, 会弹出 "user added!"
}

DwrService.addUser(user, callbackForAddUser); // DWR调用,使用较为复杂的对象,DWR会将javascript对象转换为java实体类对象
</script>


That's All.....

Good Bye, Readers.....



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值