1、新建一web项目
2、选中项目右键——属性——Java Build Path ——Libraries——Add External Jars 添加dwr.jar和 commons-logging.jar包
3、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>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
4、在WEB-INF目录下新建dwr.xml,输入以下内容:
<?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 javascript="service" creator="new">
<param name="class" value = "helloWorld.Service"></param>
</create>
</allow>
</dwr>
5、在src目录下添加Service.class文件
package helloWorld;
public class Service {
public String sayHello(String yourName)
{
//可以是访问数据库的复杂代码
return "Hello World" + yourName;
}
}
6、启动服务运行,访问地址http://127.0.0.1:8080/demo_dwr/dwr/
常见错误:
2008-8-28 9:29:47 org.apache.catalina.core.StandardWrapperValve invoke
严重: Allocate exception for servlet dwr-invoker
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.directwebremoting.dwrp.PollHandler.<clinit>(PollHandler.java:443)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.directwebremoting.impl.ContainerUtil.class$(ContainerUtil.java:97)
at org.directwebremoting.impl.ContainerUtil.setupDefaults(ContainerUtil.java:150)
at org.directwebremoting.impl.ContainerUtil.setupDefaultContainer(ContainerUtil.java:125)
at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:73)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
原因在于缺少commons-logging.jar包,添加commons-logging.jar包即可解决问题。