DWR通过Annotation与spring整合
2009-01-21 22:05
323 查看
DWR 2.0 增加了一个很有趣的新特性,Annotation,因此可以摆脱了dwr.xml里面的配置.同时也可以方便的和spring整合.
从官方网站下载dwr.jar包。然后将它放在你webapp的WEB-INF/lib目录下。 修改web.xml
< servlet >
< 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 >
< init-param >
< param-name > logLevel </ param-name >
< param-value > DEBUG </ param-value >
</ init-param >
< init-param >
< param-name > classes </ param-name >
< param-value >
com.spring.User,com.beans.Book
</ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > dwr-invoker </ servlet-name >
< url-pattern > /dwr/* </ url-pattern >
</ servlet-mapping >
< context-param >
< param-name > contextConfigLocation </ param-name >
< param-value >
/WEB-INF/beans.xml
</ param-value >
</ context-param >
< listener >
< listener-class >
org.springframework.web.context.ContextLoaderListener
</ listener-class >
</ listener >
beans.xml是spring的配置文件.org.springframework.web.context.ContextLoaderListener是一个监听器.
< init-param >
< param-name > classes </ param-name >
< param-value >
com.spring.User,com.beans.Book
</ param-value >
</ init-param >
param-value:参数为被注解的类.
编写相关类
com.beans.Book:
@DataTransferObject(converter=BeanConverter.class)
public class Book {
@RemoteProperty
private String name;
@RemoteProperty
private String author;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this .author = author;
}
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
}
@DataTransferObject: 标注在客户端和服务器之间转换类.对应dwr.xml中的<convert>标签.
注解的源代码:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DataTransferObject
{
/**
* Converter that converts instance of the class (default: bean converter).
*/
Class<? extends Converter> converter() default BeanConverter.class;
/**
* Parameters for the converter.
*/
Param[] params() default {};
}
关于annotation可以看这篇文章,java元数据
@RemoteProperty :标注在类中需要转换的属性.
源代码:
@Target({ ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface RemoteProperty
{
}
如果使用dwr.xml配置,可以这样:
<convert converter="bean" match="com.beans.Book">
<param name="include" value="name, author"/>
</convert>
User:
@RemoteProxy(name="user",creator=SpringCreator.class,
creatorParams={
@Param(name="beanName",value="user")
})
@DataTransferObject(converter=BeanConverter.class)
public class User {
@RemoteProperty
private String welcome;
@RemoteProperty
private String username;
@RemoteProperty
private String address;
@RemoteProperty
private List<Book> books;
@RemoteProperty
private int age;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@RemoteMethod
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getWelcome() {
return welcome;
}
public void setWelcome(String welcome) {
this.welcome = welcome;
}
@RemoteMethod
public List<Book> getBooks() {
return books;
}
public void setBooks(List<Book> books) {
this.books = books;
}
@RemoteMethod
public User getUser(String welcome) {
this.welcome = welcome;
return this;
}
}
@RemoteProxy:标注要给远程调用的类.
RemoteProxy的name设置创造出来的对象的名字,creator指定使用那种创造器,例子中使用SpringCreator.creatorParams指定创造器的其他参数.不同的创造器参数是不同的.
@RemoteMethod:标注给远程调用的方法
4.修改beans.xml
<bean id="remote" class="com.spring.Remote"></bean>
<bean id="user" class="com.spring.User"
p:username="windfree" p:address="anhui hefei" p:age="25">
<property name="books">
<list>
<ref bean="C"/>
<ref bean="java"/>
</list>
</property>
</bean>
<bean id="java" class="com.beans.Book" p:name="java" p:author="mypure"></bean>
<bean id="C" class="com.beans.Book" p:name="C" p:author="zgliu"></bean>
其中p为spring2.0中提供的标签.
5.html页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SpringUserInfo.html</title>
<script type='text/javascript' src='/DWRExample/dwr/interface/user.js'></script>
<script type='text/javascript' src='/DWRExample/dwr/engine.js'></script>
<script type='text/javascript' src='/DWRExample/dwr/util.js'></script>
<script type="text/javascript">
function test(){
user.getUser("Hello",callback);
}
var cellFuncs = [
function(data) { return data.name; },
function(data) { return data.author; },
];
function callback(user){
//alert(user.books)
DWRUtil.setValue('result',"欢迎你!"+" 姓名:"+user.username+",年龄:"+user.age+",住址:"+user.address);
DWRUtil.addRows('tableInfo',user.books,cellFuncs,
{ escapeHtml:false ,
rowCreator:function(options) {
var row = document.createElement("tr");
var index = options.rowIndex * 50;
row.style.color = "rgb(" + index + ",0,0)";
return row;
},
cellCreator:function(options) {
var td = document.createElement("td");
var index = 255 - (options.rowIndex * 50);
td.style.backgroundColor = "rgb(" + index + ",255,255)";
td.style.fontWeight = "bold";
return td;
}
})
}
</script>
</head>
<body>
<input id="jbutton" type="button" value="取得信息" onclick="test()" />
<br>
<div id="result"></div><br>
<table border="1">
<thead><tr>
<th>书名</th><th>姓名</th>
</tr></thead>
<tbody id="tableInfo">
</tbody>
</table>
</body>
</html>
其中使用了util.js中的一些函数.
相关文章推荐
- dwr学习5-spring与dwr整合(springmvc模式,没有加入annotation)
- Dwr整合Spring使用Annotation
- DWR整合Spring使用Annotation
- Spring整合Dwr,Cannot locate BeanDefinitionParser for element [annotation-scan]
- dwr和spring整合
- spring+hibernate Annotation方式整合
- 『转』整合SSH和DWR(1)spring+struts
- CXF整合Spring通过tomcat发布webservice
- 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 2
- Spring整合redis,通过sentinel进行主从切换。(何志雄)
- 《Lucene、webservice、(svn_ant_maven)、DWR、Freemarker、POI视频教程》更新了Spring、JAXWs的整合并且完成了一个小项目
- spring通过注释整合freemarker
- dwr基础配置和与spring整合配置
- 配置整合DWR3.0和Spring2.5使用annotation注解
- Spring中通过Annotation来实现AOP
- androidpn server 通过Spring与restful webservice整合
- 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (3)
- Spring整合redis,通过sentinel进行主从切换
- DWR与Spring整合
- Spring整合dwr实例解析