现在刚接触DWR,我看了下一些别人写的代码,然后我自己放进MyEclipse里面运行发现点击按钮无法跳转到JAVASCRIPT中写的方法~~请高人能不能详细解释下DWR的过程和为什么我不能跳转额?
<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="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">  
       
    <display-name>dwrtest</display-name>  
    <servlet>  
        <servlet-name>dwr-invoke</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-invoke</servlet-name>  
        <url-pattern>/dwr/*</url-pattern>  
    </servlet-mapping>  
       
  <welcome-file-list>  
    <welcome-file>Index.jsp</welcome-file>  
  </welcome-file-list>  
</web-app>  <?xml version="1.0" encoding="UTF-8"?>
<web-app version="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">

<display-name>dwrtest</display-name>
<servlet>
<servlet-name>dwr-invoke</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-invoke</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

  <welcome-file-list>
    <welcome-file>Index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
 三、在web.xml同目录下新建dwr.xml文件,内容如下:Xml代码  
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">  
       
<dwr>  
    <allow>  
        <create javascript="JDate" creator="new">  
            <param name="class" value="java.util.Date"/>  
        </create>  
        <create javascript="Hello" creator="new">  
            <param name="class" value="com.dwr.HelloWorld"/>  
        </create>  
    </allow>  
</dwr>    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
    
<dwr>
<allow>
<create javascript="JDate" creator="new">
<param name="class" value="java.util.Date"/>
</create>
<create javascript="Hello" creator="new">
<param name="class" value="com.dwr.HelloWorld"/>
</create>
</allow>
</dwr>   四、Index.jsp内容如下:Php代码  
<%@ 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>DWR's  HelloWorld</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">   
    -->   
    <script type='text/javascript' src='dwr/interface/Hello.js'></script>   
    <script type='text/javascript' src='dwr/engine.js'></script>   
    <script type='text/javascript' src='dwr/util.js'></script>   
    <script type='text/javascript' src='hello.js'></script>   
       
  </head>   
     
  <body>   
    <input id="user" type="text"/><input type="button" value="您好" onClick="hello()"><div id="result"></div>   
  </body>   
</html>  <%@ 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>DWR's  HelloWorld</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">
-->
<script type='text/javascript' src='dwr/interface/Hello.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='hello.js'></script>

  </head>
  
  <body>
    <input id="user" type="text"/><input type="button" value="您好" onClick="hello()"><div id="result"></div>
  </body>
</html> 五、在Index.jsp同目录下新建hello.js文件,内容如下:Js代码  
function hello(){   
    var user = $('user').value;   
    Hello.sayHello(user,callback);   
}   
  
function callback(msg){   
       
    if (typeof window['DWRUtil'] == 'undefined')   
        window.DWRUtil = dwr.util;    
    DWRUtil.setValue('result',msg);   
}  

解决方案 »

  1.   

    $('user').value;   
    美元符号定义了吗?
    $=function(id){
    return document.getElementById(id)
    }
      

  2.   

    在问下,我看了蛮久我发现使用DWR是不是主要就是为了提高速度?因为我觉得HTML写的时候是通过form表单域传输给控制层然后由控制层做相应的选择并得到结果返回给VIEW层。
    DWR我觉得貌似是直接去调用了服务器端的逻辑~是不是这样子的?还是我理解有什么出入吗?
      

  3.   

    dwr最直观的体现就是使得我们可以用javascript调用服务器端的java类,这样可以动态的刷新页面内容.(当然动态改变网页内容有很多方法)
      

  4.   

    可以这么理解,
    dwr的目的就是让java和JavaScript合为一体,这两种语言成了一家子
    不需要action,不需要url,不需要form提交,不需要刷新页面,甚至不需要struts,直接和服务器交互,
    如果你做过C/S开发,就可以更好的说明问题了,因为用了dwr之后,
    你可以把B/S开发当做C/S的模拟开发,
      

  5.   

    其实吧,DWR都不怎么用了
    jQuery的aJax挺好用的
      

  6.   

    楼主要是使用了spring3.0以上版本框架,可以把dwr.xml删掉
    spring和dwr集成,直接在类里写注解就可以被JavaScript调用了:
    片段代码:import org.directwebremoting.annotations.RemoteMethod;
    import org.directwebremoting.annotations.RemoteProxy;
    import org.springframework.beans.factory.annotation.Autowired;
    import com.core.manager.BranchMng;/**
     * @see 部门管理DWR
     * @version 1.0
     */
    @RemoteProxy(name="branchDwr")
    public class BranchDwr { @Autowired
    private BranchMng branchMng;

    /**
     * @see 判断是否存在该部门
     * @param name 部门名称
     * @return String
     * */
    @RemoteMethod
    public String branchExist(String name) {
    log.info("判断登录账号是否存在");
    if (null != branchMng.getBean(name)) {
    return "这个部门已经存在!";
    }
    return "";
    }

    }js代码:
    branchDwr.branchExist("研发部", function(result) {
       alert(result);
    });