加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

dwr

发布时间:2020-12-15 21:55:15 所属栏目:百科 来源:网络整理
导读:DWR3. 0 dwr 返回值(数组,集合,Map) 示例代码如下: 首先导入项目所需要的包,如下:dwr.jar,commons-logging- 1.0 . 4 .jar,版本可以调整; 1 .web.xml ?xml version= "1.0" encoding= "UTF-8" ? web-app xmlns= "http://java.sun.com/xml/ns/j2ee" xmlns
DWR3. 0 dwr 返回值(数组,集合,Map)
示例代码如下:
首先导入项目所需要的包,如下:dwr.jar,commons-logging- 1.0 . 4 .jar,版本可以调整;
1 .web.xml
<?xml version= "1.0" encoding= "UTF-8" ?>
<web-app xmlns= "http://java.sun.com/xml/ns/j2ee" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" version= "2.4"
xsi:schemaLocation= "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet- class >org.directwebremoting.servlet.DwrServlet</servlet- >
<init-param>
<param-name>debug</param-name>
<param-value> true </param-value>
</init-param>
<load-on-startup> </load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr /*</url-pattern>
</servlet-mapping>
</web-app>
2.DWRTest.java
package com.micro;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SuppressWarnings("unchecked")
public class DWRTest {
/**
* 第一个简单调用
*/
public String getStr() {
return "第一个dwr示例,调用成功" ;
}
/**
* 带传递参数的调用,返回String
*/
String getInfo(String name, int age,String address) {
"我的名字叫" + name + ",现年" + age + "岁," + "来自" + address;
}
/**
* 返回数组Array
*/
String[] getStrArray() {
return new String[] { "one" , "two" "three" "go!" };
}
/**
* 返回集合List
*/
List getList() {
List list = ArrayList();
list.add( "welcome" );
"to" );
"BeiJing" );
return list;
}
/**
* 返回Map类型
*/
Map getMap() {
Map map = HashMap();
map.put( "name" "周星星" );
"hobby" "逃课" );
map;
}
/**
* 返回二维数组类型
*/
List getArrayList() {
ArrayList();
list.add( "1" "2" "3" });
"four" "five" });
list;
}
/**
* Exception处理
*/
List getListTest(List list) {
try {
list.get( );
} catch (Exception e) {
throw NullPointerException( "数据位空" );
}
list;
}
}
3 .dwr.xml
?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd" >
<dwr>
<allow>
<!-- 调用不同的方法,返回不同的数据类型 -->
<create javascript= "dwr" creator= "new" >
<param name= "class" value= "com.micro.DWRTest" />
</create>
<!-- 类型转换为JavaBean的处理 -->
"dwrBean" scope= "request" >
"com.micro.UserRs" />
</create>
<convert match= "com.micro.User" converter= "bean" >
"include" "name,pass" />
</convert>
<!-- 异常Exception的处理,默认情况下dwr对异常的处理就是一个弹出框提示为Error-->
"dwrException" >
/>
</create>
"java.lang.NullPointerException" "exception" />
</allow>
</dwr>
.mydwr.js
/**
* 无参数
*/
function invoke1(){
dwr.getStr(
function(value){
alert(value);
}
);
}
/**
* 有参数
*/
function invoke2(){
dwr.getInfo( "长江七号" "火星" function(value){
alert(value);
}
);
}
/**
* 返回数组
*/
function invoke3(){
dwr.getStrArray(
function(array){
var str= "" ;
for (var i= ;i<array.length;i++){
str += array[i]+ " " ;
}
alert(str);
}
);
}
/**
* 返回集合(集合和数组的处理方式一样)
*/
function invoke4(){
dwr.getList(
function(list){
;
;i<list.length;i++){
str += list[i];
}
alert(str);
}
);
}
/**
* 返回Map
*/
function invoke5(){
dwr.getMap(
//有如下两种处理方式
/*1)已知map的key*/
function(map){
alert( "姓名:" +map.name+ +map.hobby);
}
/*2).遍历的方式
function(map){
for(var key in map){
alert(key+":"+map[key]);
}
}*/
);
}
/**
* 返回数组的集合(二维数组)
*/
function invoke6(){
dwr.getArrayList(
function(arrayList){
;
;i<arrayList.length;i++){
(var j= ;j<arrayList[i].length;j++){
str += arrayList[i][j];
}
str+= "nr" ;
}
alert(str);
}
);
}
/**
* 同步设置
*/
function invoke7(){
dwr.engine.setAsync( false ); //设置同步,那么后续的方法才能按照顺序执行
invoke1();
invoke2();
}
/**
* 批处理batch(按照先后顺序执行)
*/
function invoke8(){
dwr.engine.beginBatch();
invoke1();
invoke2();
dwr.engine.endBatch();
}
5 .index.jsp
<%@ page language= "java" pageEncoding= %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<script type= 'text/javascript' src= 'http://yangchao20020.blog.163.com/blog/dwr/engine.js' ></script>
'http://yangchao20020.blog.163.com/blog/dwr/util.js' ></script>
'http://yangchao20020.blog.163.com/blog/dwr/interface/dwr.js' ></script>
"text/javascript" "http://yangchao20020.blog.163.com/blog/mydwr.js" ></script>
</head>
<body>
<input type= "button" "DRW1" onclick= "invoke1()" />
<br />
"DRW2" "invoke2()" />
<br />
"DRW3" "invoke3()" />
<br />
"DRW4" "invoke4()" />
<br />
"DRW5" "invoke5()" />
<br />
"DRW6" "invoke6()" />
<br />
"DRW7" "invoke7()" />
<br />
"批处理测试" "invoke8()" />
</body>
</html>
上述,index.jsp页面就对上述各种dwr的返回类型和批处理(batch)做了处理,做了简单的测试,Ok,测试通过,下面再介绍几个页面,
对dwr其他功能的一些简单测试:
6 .异常处理:exception.jsp
%>
>
<html>
<head>
></script>
></script>
'http://yangchao20020.blog.163.com/blog/dwr/interface/dwrException.js' ></script>
></script>
>
function convert(){
var list;
dwrException.getListTest(list,
{
exceptionHandler:function(msg){
alert(msg);
},
callback:function(data){
alert(data);
}
}
);
}
</script>
</head>
<body>
"异常测试" "convert()" />
</body>
</html>
7 .dwr.util.getValue()调用,dwrfunc.jsp
%>
>
<html>
<head>
></script>
></script>
></script>
></script>
</head>
<body>
"text" name= id= "nameid" />
<br/>
"EL通过id取值" "alert(${'nameid'}.value)" />
<br />
//如果要是有dwr.util提供的功能,必须引入dwr/util.js文件,dwr3之后,有写函数内写name或id都可以
<br/>
"dwr.util通过id" "alert($('nameid').value)" />
<br />
"dwr.util通过name" "alert($('name').value)" />
<br />
"dwr.util通过name/id" "alert(dwr.util.getValue('name'))" />
<br />
</body>
</html>
8 .对JavaBean的传递和返回
User.java:
package com.micro;
public User {
private String name;;
String pass;
//get/set方法....
}
UserRs.java:
com.micro;
UserRs {
User convertUser(User user) {
user.setName( "admin" );
user.setPass( "123456" );
user;
}
}
bean.jsp:
%>
>
<html>
<head>
></script>
></script>
'http://yangchao20020.blog.163.com/blog/dwr/interface/dwrBean.js' ></script>
></script>
>
function convert(){
var uname = $( ).value;
var upass = $( "pass" ).value;
var obj = {name:uname,pass:upass};
dwrBean.convertUser(obj,function(data){
$( "uname" ).value = data.name;
"upass" ).value = data.pass;
});
}
</script>
</head>
<body>
"you name" /><br/>
"your password" /><br/>
"测试处理" />
</body>
</html>
这些,只是对dwr的简单应用,其中的配置都在dwr.xml中,大家可以举一反三,通常情况下,dwr和spring要结合使用,下面给出一个简单的配置说明:
比如:
<!-- 验证登陆名是否存在 -->
<create creator= "spring" javascript= "loginServiceDWR" >
"beanName" "coreLoginService" />
<include method= "checkLogin" />
</create>
其中,creator= ,表明由spring来创建该对象,javascript= ,说明客户端的调用名称叫 ,<param name= />指明了spring配置文件中,id为 的这么一个bean,<include method= />,对外公开的方法是 ,调用过程同上述其他类型调用相同,不同就是配置而已。上述代码,仅供参考。
注意:引入dwr的js文件的顺序不能错了,如:
></script>
></script>
></script>
先引入dwr自身的,再引入自己的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读