您的位置:首页 > 编程语言 > Java开发

JavaWEB开发中用到DWR时的配置、调用、Form提交的方法

2010-05-20 16:14 423 查看
DWR官方网站:

http://getahead.ltd.uk/dwr/

 

(一)添加DWRjar包:

从官网上下载jar包,放到lib目录下

 

(二)编辑配置文件

    1.编辑配置文件web.xml:

         以下几行代码必须被添加到WEN-INF/web.xml文件中。注意,要把<servlet>和其他<servlet>放在一起,<servlet-mapping>要和其他<servlet-mapping>放在一起

 

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


 

     2.在web.xml目录下创建dwr.xml文件,内容如: 具体dwr配置详解可以下载:《dwr配置详解

 

<?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>
<!-- 指定绑定的formBean类的路径 -->
<convert converter="bean" match="dwr.FormBean"/>
<!-- javascript="service" 表示建立的js的方法名 -->
<create creator="new" javascript="service">
<!-- 指定类文件的路径 -->
<param name="class" value="dwr.Dwr" />
<include method="getFormBean"/>
</create>
</allow>
</dwr>


 

其中formBean也可用Struts的生成的form,配置文件中写好路径、在类文件中的返回类型修改好,代码如:

 

<allow>
<!-- 指定绑定的formBean类的路径 -->
<convert converter="bean" match="thread.form.UserForm"/>

<!-- 注意这里如不定义,会在控制台报警示错误,但不影响运行 -->
<convert converter="null" match="org.apache.struts.action.ActionServletWrapper"/>

<!-- javascript="service" 表示建立的js的方法名 -->
<create creator="new" javascript="service">
<!-- 指定类文件的路径 -->
<param name="class" value="dwr.Dwr" />
<include method="getFormBean"/>
</create>
</allow>


 类文件修改:

 

public UserForm getFormBean(Map formMap){
...
UserForm userFomr = new UserForm();
try{
BeanUtils.populate(userFomr, formMap);
....
return userFomr;
}


 

(三)编写类方法:

     在src的包中建立类文件,如:

 

package dwr;

import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;

public class Dwr {
public boolean checkName(String name) {
boolean flag = false;
if("wq".equals(name)){
flag = true;
}
return flag;
}

public FormBean getFormBean(Map formMap){
try {
synchronized (this) {
this.wait(5000);
this.notify();
}
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
FormBean formBean = new FormBean();
try{
BeanUtils.populate(formBean, formMap);
}catch(Exception e){
e.printStackTrace();
}
System.out.println("==============客户端传来的信息==============");
System.out.println("FormBean.username:"+formBean.getName());
System.out.println("FormBean.password:"+formBean.getAge());
System.out.println("=========================================");

System.out.println("==============客户端传来的信息Map==============");
System.out.println("FormBean.username:"+formMap.get("name"));
System.out.println("FormBean.password:"+formBean.getAge());
System.out.println("=========================================");
return formBean;
}

}


 

代码:

synchronized (this) {
    this.wait(5000);
    this.notify();
   }
使线程等待5秒,模仿网络延迟效果

 

formBean类文件:

 
package dwr;

public class FormBean {
private String name="";
private int age = 0;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}


 

(四)运行项目,检测方法

      运行项目后访问:http://localhost:端口/项目名/dwr,之后会出现之前定义的service的链接,点击进入后可以看到类中定义的方法如:

 
Methods For: service (dwr.Dwr)
To use this class in your javascript you will need the following script includes:

<script type='text/javascript' src="/test/dwr/interface/service.js" src="test/dwr/interface/service.js"></script>
<script type='text/javascript' src="/test/dwr/engine.js" src="test/dwr/engine.js"></script>

In addition there is an optional utility script:

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

Replies from DWR are shown with a yellow background if they are simple or in an alert box otherwise.
The inputs are evaluated as Javascript so strings must be quoted before execution.

getFormBean(  );
checkName(  );
(Warning: checkName() is excluded: Method access is denied by rules in dwr.xml. See below)


 

 (五)在页面中加入AJAX:

    1.在页面中引入js文件路径:

<script type='text/javascript' src="/test/dwr/interface/service.js" src="test/dwr/interface/service.js"></script>
<script type='text/javascript' src="/test/dwr/engine.js" src="test/dwr/engine.js"></script>
<script type='text/javascript' src="/test/dwr/util.js" src="test/dwr/util.js"></script>


 

2.如果是验证单个的数据,如用户名:

function firstDwr() {
service.checkName($("文本框名"), callBackHello);
}
//回调函数
function callBackHello(data) {
alert(data);
}


 

 回调函数callBackHello(data),data自动传入类方法的返回值进行操作

 

3.如果是提交表单操作:

<%@ 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></title>
<script type='text/javascript' src="/test/dwr/interface/service.js" src="test/dwr/interface/service.js"></script>
<script type='text/javascript' src="/test/dwr/engine.js" mce_src="test/dwr/engine.js"></script>
<script type='text/javascript' src="/test/dwr/util.js" src="test/dwr/util.js"></script>
</head>
<mce:script type="text/javascript"><!--
function formsubmit() {
dwr.util.useLoadingMessage("正在提交...");
var formMap = dwr.util.getValues("chackForm");
service.getFormBean(formMap, result);
}
function result(data) {
alert("从服务端返回的数据:/nuserName:" + data.name + "/npassWord:" + data.age);
}
// --></mce:script>
<body>
<form name="chackForm" method="post">
<input name="name" type="text">
<input name="age" type="text">
<input id="sub" type="button" value="提 交" onclick="formsubmit()">
</form>
<br />
</body>
</html>


 

 

 

 

 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐