今天学习了Dwr框架,于是就在这里写一下具体的配置,也正好作为复习与巩固。
先简单地介绍一下:
DWR是一种AJAX(AsynchronousJavaScript and XML)的JAVA实现,它提供了一种能在web浏览器端采用JavaScript语言直接调用后台业务商业组件的解决方案。
具体配置流程:
-
导入jar包:将dwr.jar放入WEB-INF/lib
-
导入xml文件:web.xml与dwr.xml 放入WEB-INF下
之后就主要是配置的是dwr.xml文件,不过还是先分别来看一下。
web.xml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?
xml
version
=
"1.0"
encoding
=
"ISO-8859-1"
?>
<
web-app
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version
=
"2.4"
>
<
servlet
>
<
servlet-name
>dwr-invoker</
servlet-name
>
<
servlet-class
>uk.ltd.getahead.dwr.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
>
</
web-app
>
|
这个xml文件一般不需要修改,我们自己所需要配置的servlet就跟在后面写就可以了。
接下来就是dwr.xml了,这个就是我们要做修改的文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
//这是一个简单的例子
<
dwr
>
<
allow
>//creator元素主要用于前台JS业务组件对象的生成器如Spring、New、Scripts等。其中javascript后的名字就是前台页面中js所要调用的函数的名字。前台页面javascript引用此组件的名称。名称需要唯一。
//还可以加入scope表示其作用范围,共Session、request、application、page四个选项
// Param
// 配置业务组件的创建参数。Name属性设置名称,value属性设置业务组件的具体路径(类全名称)。对于java逻辑处理类的名称
//Include
//授权方式保护业务组件方法的可见性。属性method可以访问的方法名称。如果没有配置则默认为所有方法都可以访问。就是公开给前台可以访问的方法
//exclude
//排除方式保护业务组件方法的可见性。属性method设置不可以访问的方法名称。除此之外的都可以访问。如果有需要控制业务组件方法的访问权限时建议采用这种方式。
<
create
creator
=
"new"
javascript
=
"Caculate"
>
<
param
name
=
"class"
value
=
"com.app.main.Cac"
/>
<
include
method
=
"add"
/> //这里显示了add方法
<
include
method
=
"listAll"
/> //这里显示了listAll方法
</
create
>
//converter元素用于配置各种数据类型的转换器如String、Array等。做显示数据
// converter
//配置数据类型的转换器。一般是设置bean转换器,因为基本类型的转换器DWR默认设置。
//match
//设置要使用此转换器的java实体对象。如:
//<
convert
converter
=
"bean"
match
=
"demo.entity.*"
/>
//子节点:
//Param对象属性的转换规则,name属性设置规则有include和exclude选项,作用和组件方法控制的一样。Value属性设置实体对象的属性。默认是所有属性都进行转换。
<
convert
converter
=
"bean"
match
=
"com.app.main.Item"
>
<
param
name
=
"include"
value
=
"name,price"
/>
</
convert
>
</
allow
>
</
dwr
>
|
再来结合一下前台的js代码来看一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
function
cacadd(){
var
arg1v = document.form_test.arg1.value;
var
arg2v = document.form_test.arg2.value;
//这里的Calculate对于的就是dwr.xml中create表情里的javascript,而add就是param中value对于的java类的方法,返回值存在res中
Caculate.add(arg1v,arg2v,
function
(res){
alert(res);
});
return
false
;
}
function
listAll(){
//同上
Caculate.listAll(
function
(items){
var
ul = document.createElement(
"ul"
);
for
(
var
i =0 ; i < items.length; i++){
var
item = items[i];
var
li = document.createElement(
"li"
);
li.innerHTML =
"name: "
+item.name+
" ,price: "
+item.price+
""
;
ul.appendChild(li);
}
document.body.appendChild(ul);
});
}
|
最后,在页面的头部不要忘记添加对于的js文件
这个js文件也是对应create表情里的javascript,应该是dwr帮我们自动生成的js文件
<script type='text/javascript' src='/simple/dwr/interface/Caculate.js'></script>
<script type='text/javascript' src='/simple/dwr/engine.js'></script>
<script type='text/javascript' src='/simple/dwr/util.js'></script>