读书人

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

发布时间: 2012-06-10 14:03:15 作者: rapoo

新手问下关于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);
});

读书人网 >Java Web开发

热点推荐