首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

新手问下关于DWR的有关问题,请高人指点

2012-06-10 
新手问下关于DWR的问题,请高人指点~现在刚接触DWR,我看了下一些别人写的代码,然后我自己放进MyEclipse里面

新手问下关于DWR的问题,请高人指点~
现在刚接触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);  
}  


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

探讨
引用:

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

在问下,我看了蛮久我发现使用DWR是不是主要就是为了提高速度?因为我觉得HTML写的时候是通过form表单域传输给控制层然后由控制层做相应的选择并得到结果返回给VIEW层。
DWR我觉得貌似是直……

[解决办法]
其实吧,DWR都不怎么用了
jQuery的aJax挺好用的
[解决办法]
楼主要是使用了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);
});

热点排行