第一步:引入:dwr.jar
第二步:在dwr-2.0.3-src\web\WEB-INF\classes\org\directwebremoting目錄下找到engine.js和util.js,并引入
第三步:在web.xml中注冊servlet如下:
1 <servlet>
2 <servlet-name>dwr-invoker</servlet-name>
3 <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
4 <init-param>
5 <param-name>debug</param-name>
6 <param-value>true</param-value>
7 </init-param>
12 </servlet>
13
14 <servlet-mapping>
15 <servlet-name>dwr-invoker</servlet-name>
16 <url-pattern>/dwr/*</url-pattern>
17 </servlet-mapping>
第四步:在WEB-INFO下建立dwr.xml,內(nèi)容如下:2 <servlet-name>dwr-invoker</servlet-name>
3 <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
4 <init-param>
5 <param-name>debug</param-name>
6 <param-value>true</param-value>
7 </init-param>
12 </servlet>
13
14 <servlet-mapping>
15 <servlet-name>dwr-invoker</servlet-name>
16 <url-pattern>/dwr/*</url-pattern>
17 </servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="helloWord">
<param name="class" value="on08_04_19.HelloWord" />
</create>
</allow>
</dwr>
第五步:在package:on08_04_19下編寫HelloWord.java,代碼如下:<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="helloWord">
<param name="class" value="on08_04_19.HelloWord" />
</create>
</allow>
</dwr>
package on08_04_19;
public class HelloWord {
public String sayHello(String name){
return "Hello "+name;
}
}
按照文檔所說的方法測試,通過public class HelloWord {
public String sayHello(String name){
return "Hello "+name;
}
}
第六步:編寫JSP代碼如下:
<script type="text/javascript" src="<%=request.getContextPath() %>/js/engine.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/util.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/interface/helloWord.js"></script>
<script type="text/javascript">
function firstDwr(){
helloWord.sayHello("楊凱",callBackMethod);
}
function callBackMethod(data){
alert(data);
}
</script>
</head>
<body>
<form action="">
<input type="button" value="歡迎" onclick="firstDwr()">
</form>
</body>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/util.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/interface/helloWord.js"></script>
<script type="text/javascript">
function firstDwr(){
helloWord.sayHello("楊凱",callBackMethod);
}
function callBackMethod(data){
alert(data);
}
</script>
</head>
<body>
<form action="">
<input type="button" value="歡迎" onclick="firstDwr()">
</form>
</body>
第一遍完整測試,發(fā)現(xiàn)點(diǎn)擊按鈕之后無反應(yīng),但是后臺(tái)卻打印
A request has been denied as a potential CSRF attack
無奈GOOGLE了半天,得到法子修改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>
<!-- 加入了跨域調(diào)用功能 -->
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
例外被拋出且未被接住
超暈,無奈繼續(xù)GOOGLE,有文章竟然說官方的JAR包有BUG,讓換成他的包,我暈,真是牛人,更牛的是換成他的包之后,還真是正常了,我靠!牛人全文:http://yahaitt.javaeye.com/blog/147795