DWR 2 與 Spring 2.5 Web MVC 整合心得筆記

使用軟體版本:
  1. 在web.xml加上:


  2. <listener>
    <listener-class>
    org.springframework.web.context
    .ContextLoaderListener
    </listener-class>
    </listener>

    <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>
    org.directwebremoting.spring
    .DwrSpringServlet
    </servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>

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

  3. 新增一個class,內容如下:


  4. public class DemoImpl implements Demo {
    public String sayHello(String name) {
    return "Hello, " + name;
    }
    }

  5. 在要使用DWR tag的bean definition file的<beans>加上租體字的部份:


  6. <beans xmlns="http://www.springframework.org/schema/
    beans"
    xmlns:xsi="http://www.w3.org/2001/
    XMLSchema-instance"
    xmlns:dwr="http://www.directwebremoting.org/
    schema/spring-dwr"

    xsi:schemaLocation=
    "http://www.springframework.org/schema/
    beans http://www.springframework.org/
    schema/beans/spring-beans-2.5.xsd
    http://www.directwebremoting.org/schema/
    spring-dwr http://www.directwebremoting.org/schema/
    spring-dwr-2.0.xsd
    ">

  7. 加上DWR configuration和controller的宣告:


  8. <dwr:configuration></dwr:configuration>
    <dwr:controller id="dwrController" debug="true"/>

  9. 在urlMapping加上DWR URL的mapping:


  10. <bean id="urlMapping"
    class="org.springframework.web.servlet
    .handler.SimpleUrlHandlerMapping">
    <property name="mappings">
    <value>
    /engine.js=dwrController
    /interface.js=dwrController
    /call/**=dwrController
    /interface/**=dwrController

    </value>
    </property>
    <property name="alwaysUseFullPath"
    value="true"/>
    </bean>

  11. 宣告Demo的bean:


  12. <bean id="demo" class="DemoImpl">
    <dwr:remote javascript="Demo">
    <dwr:include method="sayHello"/>
    </dwr:remote>
    </bean>

  13. 撰寫一個Javascript,index.js:


  14. function update() {
    var name = dwr.util.getValue("demoName");
    Demo.sayHello(name, function(data) {
    dwr.util.setValue("demoReply", data);
    });
    }

  15. 撰寫一個網頁,例如jsp:


  16. <%@ page language="java"
    contentType="text/html;charset=UTF-8"
    pageEncoding="UTF-8"%>

    <%
    String basePath = request.getScheme()
    + "://" + request.getServerName()
    + ":"
    + request.getServerPort()
    + request.getContextPath()
    + "/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <base href="<%= basePath %>">

    <meta http-equiv="Content-Type"
    content="text/html;
    charset=UTF-8">

    <title>Hi</title>

    <script type="text/javascript"
    src="dwr/engine.js"> </script>

    <script type="text/javascript"
    src="dwr/util.js"> </script>


    <script type='text/javascript'
    src='dwr/interface/Demo.js'> </script>

    <script type="text/javascript"
    src='js/index.js'> </script>

    </head>
    <body><p>
    Name:
    <input type="text" id="demoName"/>
    <input value="Send" type="button"
    onclick="update()"/>
    <br/>
    Reply: <span id="demoReply"></span>
    </p></body>
    </html>

0 意見: