DWR与Spring MVC 集成
以前没有使用过DWR,客户端与服务器端的ajax交互都是使用的jquery,比较简单。昨天把DWR在Spring中的结构大概看了一下,可以有如下步骤将DWR集成到Spring MVC中。1.导入DWR.jar。2.web.xml中配置DWR映射 dispatcherServletorg.springframework.web.servlet.Dispatcher
以前没有使用过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.....
更多推荐
所有评论(0)