基于J2EE的ajax之DWRWord文档下载推荐.docx
- 文档编号:20532386
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:18
- 大小:110.82KB
基于J2EE的ajax之DWRWord文档下载推荐.docx
《基于J2EE的ajax之DWRWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于J2EE的ajax之DWRWord文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
DWR官方网站:
//directwebremoting.org/可以下载最新版
2.安装:
直接将dwr.jar及commons-logging.jar导入lib目录
3.配置:
首先需要在Web.xml文件中加入如下代码:
===================================================================
//配置DWR的核心Servlet
<
servlet>
//指定DWR核心Servlet的名称
<
servlet-name>
dwr<
/servlet-name>
//指定DWR的核心Servlet的实现类
servlet-class>
uk.ltd.getahead.dwr.DWRServlet<
/servlet-class>
//是否打开DWR的调试状态
init-param>
<
param-name>
debug<
/param-name>
param-value>
true<
/param-value>
/init-param>
<
/servlet>
//指定映射的URL
servlet-mapping>
//指定核心DWRURL
url-pattern>
/dwr/*<
/url-pattern>
/servlet-mapping>
然后编写Java程序:
publicStringhello(Stringname){
returnname+"
,你好!
欢你来到A8..."
;
}
}
完成后增加一个dwr.xml文件,代码如下:
?
xmlversion="
1.0"
encoding="
utf-8"
>
//指定DWR配置文件的DTD信息
!
DOCTYPEdwrPUBLIC"
-//GetAheadLimited//DTDDirectWebRemoting3.0//EN"
"
//getahead.org/dwr//dwr30.dtd"
—DWR配置文件的根元素都是DWR-->
dwr>
allow>
—creator元素决定使用哪种创建器进行调用JavaScript如:
Spring、Struts、jsf,这里我们使用New创建,new代表新建一个JavaScript对象,不和Java的其它框架配合使用-->
//这里的javascript=”a8”代表对应生成的js文件就是a8.js如下图红框处
createcreator="
new"
javascript="
a8"
—使用class属性指定创建该Java实例的实现类-->
paramname="
class"
value="
a8.HelloA8"
/>
/create>
—实现a8.HelloA8类所需要的Bean-->
convertmatch="
a8.Person"
converter="
bean"
—Bean转换支持通配符”*”代表a8类包下的所有类-->
a8.*"
converter="
/convert>
/allow>
/dwr>
五、怎样应用到你的Web程序中?
1.在配置完成后DWR会自动生成三个js文件,这三个文件是动态生成的,生成的位置也是变化的,它们的位置会随着Web.xml文件中配置uk.ltd.gatahead.dwr.DWRServlet的URL不同而不同。
2.进入http:
//localhost:
8080/[YOUR-WEBAPP]/然后点击你创建的类,就可以看到生成的JavaScrip方法了,你可以根据实际情况修改/[YOUR-WEBAPP]/部分。
如下例:
scripttype='
text/javascript'
src='
dwr/interface/hello.js'
/script>
dwr/engine.js'
dwr/util.js'
这三个JS在引入到Jsp或者HTML中时,第一、二两个是必备的。
第一个JS:
是由dwr.xml文件使用create元素,暴露成JavaScript的实例
第二个JS:
Engine.js文件,DWR的核心,在调用过程中是不可缺少的文件
第三个JS:
Unil.js文件,DWR工具的JavaScript文件,该文件内提供了一些方法,通过这些方法可以简化DOM操作,该文件在引入过程中属于可选引入
3.导入了DWR动态生成的JavaScript脚本,我们就可以使用异步方式来调用这些方法,所谓的异步,就是使用一个回调函数,当调用远程Java方法,总是为该方法增加一个参数,参数列表的最后一个参数就是回调函数,回调函数当服务器响应时自动启动,用于将服务器响应显示在当前页面中,实际上使用回调函数有两种做法:
简单回调和使用JSON格式,简单回调是指,调用远程Java方法时增加一个方法参数,最后一个方法参数是回调函数,假设有如下一个类,该类里仅包含一个简单的hello方法:
//简单的处理类
PublicclassHello{
//仅包含一个简单的hello方法
publicStringhello(Stringname){
将其暴露成JavaScript对象(假设被暴露成一个名为a8的JavaScript对象)可
以通过如下代码来使用该对象:
HTML>
HEAD>
TITLE>
DWR入门<
/TITLE>
—导入DWR的核心JavaScript代码-->
dwr/interface/a8.js'
/HEAD>
编写:
hellodwr.js
functionhello(){
a8.hello(‘唐伯虎’,function(data){
alert(data);
});
或者
a8.hello(‘唐伯虎’,feedback);
functionfeedback(data){
alert(data);
其中,’唐伯虎’是传给远程Java方法hello(Stringname)的name参数,feedback则就回调函数。
六、以下提供一个完整的例子,来演示实际过程中的操作:
预览地址:
Java端
HelloA8.java
publicclassHelloA8{
}
publicStringsendObj(Personp){
returnp.getName()+"
,您好!
publicPersongetBean(Stringname){
returnnewPerson("
服务器端"
+name);
publicList<
Person>
getPersonList(){
List<
result=newArrayList<
();
result.add(newPerson("
集合aaaa"
));
集合bbbb"
集合cccc"
returnresult;
publicPerson[]getPersonArray(){
Person[]result=newPerson[3];
result[0]=newPerson("
数组aaaa"
);
result[1]=newPerson("
数组bbbb"
result[2]=newPerson("
数组cccc"
publicMap<
String,Person>
getPersonMap(){
Map<
result=newHashMap<
result.put("
first"
newPerson("
Mapaaaa"
second"
Mapbbb"
third"
Mapcccc"
publicStringsendList(List<
pl){
Stringresult="
"
for(Personp:
pl)
{
result+=p.getName()+"
br>
publicStringsendMap(Map<
String,Person>
pmap){
for(Stringkey:
pmap.keySet())
result+="
键"
+key+"
其值为:
+pmap.get(key).getName()+"
Person.java
publicclassPerson
{
privateStringname;
publicPerson(){}
publicPerson(Stringname)
this.name=name;
publicvoidsetName(Stringname)
publicStringgetName()
returnname;
修改web.xml配置
UTF-8"
web-appversion="
2.5"
xmlns="
xmlns:
xsi="
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
--指定核心Servlet的URL映射-->
welcome-file-list>
welcome-file>
index.html<
/welcome-file>
/welcome-file-list>
/web-app>
Dwr.xml的配置(dwr.xml与web.xml位于同级目录下面)
GBK"
-//GetAheadLimited//DTDDirectWebRemoting2.0//EN"
//getahead.ltd.uk/dwr/dwr20.dtd"
hello"
a8.HelloA8"
convertconverter="
match="
signatures>
[CDATA[
importa8.HelloA8;
importa8.Person;
importjava.util.List;
importjava.util.Map;
hello.sendList(List<
hello.sendMap(Map<
]]>
/signatures>
HTML内容
DOCTYPEHTMLPUBLIC"
-//W3C//DTDHTML4.0Transitional//EN"
scripttype="
text/javascript"
src="
hellodwr.js"
BODY>
h3>
/h3>
请输入您的名字<
inputid="
name"
name="
type="
text"
/>
inputtype="
button"
发送简单请求"
onClick="
sendMessage();
发送对象参数"
sendObject();
返回JavaBean"
getBean();
返回Bean集合"
getBeanList();
返回Bean数组"
getBeanArray();
返回BeanMap"
getBeanMap();
发送Bean集合"
sendBeanList();
发送BeanMap"
sendBeanMap();
hr>
下面是服务器的回应:
divid="
show"
/div>
/BODY>
/HTML>
调用JS
//发送简单字符串参数,返回普通字符串
functionsendMessage(){
varname=document.getElementById("
).value;
hello.hello(name,cb)
functioncb(data){
document.getElementById("
).innerHTML=data;
//发送一个JavaBean对象作为参数,返回普通字符串
functionsendObject()
varnameValue=document.getElementById("
hello.sendObj({name:
nameValue},cb);
//调用返回JavaBean方法
functiongetBean(){
hello.getBean(name,beanCb)
functionbeanCb(data){
).innerHTML=data.name+"
,您好,您已经学会了使用JavaBean返回值"
//调用返回集合的方法
functiongetBeanList(){
hello.getPersonList(listCb);
functionlistCb(data){
varresult='
'
for(vari=0;
i<
data.length
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 J2EE ajax DWR
![提示](https://static.bdocx.com/images/bang_tan.gif)