小试Annotation来配置DWR

本文介绍如何使用DWR 2.0及以上的版本通过注解配置实现远程调用,包括web.xml配置、远程访问类配置、Bean转换等步骤,并提供了Spring注入配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DWR2.0以上版本支持通过配置Annotation的方式来配置DWR,
可以完全抛弃dwr.xml.

1.和用dwr.xml的配置稍稍有一些不一样。来看看:

<?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="2.5"xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>

<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>classes</param-name>
<param-value>
com.TestAction,
com.User
</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>



<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

注意对于内部类的语法标识,要用$符号 。例如
java.util.Map$Entry而不是 java.util.Map.Entry

2.来看一下远程访问类怎么配置:
packagecom;

importorg.directwebremoting.annotations.RemoteMethod;
importorg.directwebremoting.annotations.RemoteProxy;
/*
类注解,其中name是非必须的。不加的时候就和类名一样。
*/

@RemoteProxy(name
="test")
publicclassTestAction
{
/**
*远程调用的方法都须加上此注解,否则无法调用
*
@parama
*
@paramb
*
@return
*/

@RemoteMethod
publicintadd(inta,intb)
{
returna+b;
}


@RemoteMethod
publicintminus(inta,intb)
{
returna-b;
}


@RemoteMethod
publicintmultiply(inta,intb)
{
returna*b;
}


publicintdevide(inta,intb)
{
if(b!=0)
returna/b;
return0;
}


//测试Bean
@RemoteMethod
publicStringtestName()
{
Useruser
=newUser();
user.setUsername(
"zdw");
returnuser.getUsername();
}

}


3.再来看看Bean的转换:
packagecom;

importorg.directwebremoting.annotations.DataTransferObject;
importorg.directwebremoting.annotations.RemoteProperty;

@DataTransferObject
publicclassUser
{
privateIntegerid;
privateStringusername;

@RemoteProperty
publicIntegergetId()
{
returnid;
}


publicvoidsetId(Integerid)
{
this.id=id;
}


@RemoteProperty
publicStringgetUsername()
{
returnusername;
}


publicvoidsetUsername(Stringusername)
{
this.username=username;
}

}

部署之后,打开调试页,我们将看到:
add(1,2);3
multiply(
4,5);20
minus(
1,10);-9
devide(
1,1);
(Warning:devide()isexcluded:Methodaccessisdeniedbyrulesindwr.xml.Seebelow)
testName();
"zdw"
我们发现没标注释的devide()方法没法调用。

如果你想通过Spring注入来配置DWR只需加入:
@RemoteProxy(name="test",creator=SpringCreator.class,creatorParams=
{@Param(name="beanName",value="test")})
对应:
<createjavascript="test"creator="spring">
<!--其中name是固定值,value是在xml注入的bean-->
<paramname="beanName"value="test"/>
</create>

creator :默认就是NewCreate了。

ok,基本完成,这样是不是方便多了。~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值