DWR学习之------>DWR详细配置

时间:2020-12-21 08:12:17
闲来无事,感觉好久没用DWR了,很多配置都忘记了,所以特地做了一个实例程序,温习一下。下面介绍一些具体的做法。
      首先DWR的jar包 dwr.jar文件放到你的工程中。DWR的使用非常简单,只要加入jar包,简单配置就可以使用了。
     然后在web.xml中添加如下一段
<!-- DWRServlet -->

  <servlet>
      < servlet-name>dwrService</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>dwrService</servlet-name>
      < url-pattern>/dwr/*</url-pattern>
  < /servlet-mapping>
</web-app>

   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 creator="new"  javascript="service">
        <param name="class"  value="dwr.DWRService" />
        <!--  <include  method="sayHello"/>
        <include  method="compare"/>-->    <!--注:include用来注明该类中要发布的方法-->
        </create>
    </allow>
   </dwr>

  DwrServlet类的定义代码如下:

package dwr;

public class DWRService {
    public String sayHello(String  name){
        return "Hello World,"+name;
    }
    public int  compare(int a , int b){
        if(a>b) return a;
        else return  b;
    }
}


  这些配置完成后,就可以发布了。  访问  http://localhost:8080/dwr1/dwr就可以看到发布为DWR的类,点点就去后就可以看到该类中发布的方法了,还可以测试。

   接下来就是如何使用发布的DWR方法了。

   我们在测试页面, index.jsp 写入如下代码

<%@ page language="java" import="java.util.*"  pageEncoding="utf-8"%>
<%
String path =  request.getContextPath();
String basePath =  request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01  Transitional//EN">
<html>
  <head>
    <base  href="<%=basePath%>">
    <title>My JSP 'index.jsp' starting  page</title>
    <meta http-equiv="pragma"  content="no-cache">
    <meta http-equiv="cache-control"  content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords"  content="keyword1,keyword2,keyword3">
    <meta  http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
     <!--这个js文件是DWR自带的,使用DWR框架必须引入这个js文件-->
    <script  type='text/javascript'  src='/dwr1/dwr/interface/service.js'></script>
      < !--注:这里引入的js文件时发布DWR类时生成的js文件,可以通过访问http://localhost:8080/dwr1/dwr 在页面上看到-->
      <script type='text/javascript'  src='/dwr1/dwr/engine.js'></script>
      <script  type="text/javascript">
          function checkInvoke(){
               service.sayHello("jony",callback);
          }
          function  callback(data){
              alert(data);
          }
      < /script>
  </head>
  <body>
    This is my JSP page. < br>
    <input type="button" value="调用服务器方法打招呼" onclick="checkInvoke()"/>
  </body>
</html>

    点击页面上的按钮,就可以调用在不刷新页面的前提下调用服务器定义的方法了。   大家可以自己试一下,看看效果,这这是一个小例子,相信聪明的同行肯定能举一反三的。