一路拾遗
Collect By Finding All The Way ......
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 81,comments - 41,trackbacks - 0
<
2009年12月
>
日
一
二
三
四
五
六
29
30
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
1
2
3
4
5
6
7
8
9
我的博客开张啦!欢迎大家多多来踩!
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔档案
2010年9月 (1)
2010年6月 (2)
2010年5月 (5)
2009年12月 (4)
2009年11月 (3)
2009年10月 (2)
2009年8月 (2)
2009年7月 (4)
2009年6月 (5)
2009年5月 (1)
2009年4月 (2)
2008年12月 (2)
2008年11月 (1)
2008年10月 (1)
2008年9月 (4)
2008年8月 (12)
2008年7月 (30)
文章档案
2008年12月 (1)
相册
毕业照
搜索
积分与排名
积分 - 64154
排名 - 822
最新评论
1. re: myeclipse开发hibernate应用程序示例[未登录]
真的好好...
--云
2. re: myeclipse开发hibernate应用程序示例
做得很认真,顶一个
--~!
3. re: myeclipse开发hibernate应用程序示例[未登录]
not bad
--1
4. re: myeclipse开发hibernate应用程序示例
类名一定要大写,hibernate版本要小于4才行!!!!!!
--第三方
5. re: myeclipse开发hibernate应用程序示例
有错误啊
--第三方
阅读排行榜
1. myeclipse开发hibernate应用程序示例(15645)
2. 使用AXIS调用WSDL描述的Web服务(9674)
3. 使用AXIS调用WSDL描述的Web服务(续)(6033)
4. 基于RemoteObject方式的Java-Flex交互(USING LCDS)(2678)
5. Java WebService注册中心JUDDI配置方法(2192)
评论排行榜
1. myeclipse开发hibernate应用程序示例(16)
2. 使用UDDI4J连接JUDDI(10)
3. 使用AXIS调用WSDL描述的Web服务(续)(5)
4. 使用AXIS调用WSDL描述的Web服务(3)
5. 找实习的伤心事(2)
AJAX技术初探
一、连接的建立
<
script type
=
"
text/javascript
"
>
var
request;
window.onload
=
function
()
{
listApi();
}
function
createRequest()
{
try
{
request
=
new
XMLHttpRequest();
}
catch
(trymicrosoft)
{
try
{
request
=
new
ActiveXObject(
"
Msxml2.XMLHTTP
"
);
}
catch
(othermicrosoft)
{
try
{
request
=
new
ActiveXObject(
"
Microsoft.XMLHTTP
"
);
}
catch
(failed)
{
request
=
false
;
}
}
}
if
(
!
request)
alert(
"
Error initializing XMLHttpRequest!
"
);
}
二、服务器端Servlet
这是doGet方法,即将参数写在调用串中。
public
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException
{
response.setContentType(
"
text/xml
"
);
response.setHeader(
"
Cache-Control
"
,
"
no-cache
"
);
request.setCharacterEncoding(
"
GBK
"
);
response.setCharacterEncoding(
"
UTF-8
"
);
int
restMethodId
=
Integer.parseInt(request.getParameter(
"
restMethodId
"
));
String xml_start
=
"
<methodDetail>
"
;
String xml_end
=
"
</methodDetail>
"
;
StringBuilder xml
=
new
StringBuilder();
xml.append(xml_start);
RestDao restDao
=
new
RestDao();
RestMethod restMethod
=
restDao.getRestMethod(restMethodId);
xml.append(
"
<name>
"
);
xml.append(zhuanYi(restMethod.getRestMethodName()));
xml.append(
"
</name>
"
);
xml.append(xml_end);
String xmlString
=
xml.toString();
xmlString
=
xmlString.replace(
"
"
,
"
"
);
xmlString
=
xmlString.replace(
"
&
"
,
"
&
"
);
response.getWriter().write(xmlString);
}
三、页面发送请求
这里调用的Servlet的Get调用,即调用doGet方法。这种方式适合于参数是简单数据,这样可以把参数卸载调用url中。
对于参数是复杂的数据对象时,应该调用doPost方法,即在调用串中不包含调用参数,而是把调用参数写在request.send(参数对象)中,doGet调用时此处为null。
function
getMethodDetail(methodId)
{
var
id
=
methodId.substr(
6
);
var
url
=
"
servlet/getMethodDetail?restMethodId=
"
+
escape(id);
call(url);
}
function
call(url)
{
createRequest();
if
(request)
{
request.open(
"
GET
"
,url,
true
);
request.onreadystatechange
=
callback;
request.send(
null
);
}
}
四、回调函数
function
callback()
{
if
(request.readyState
==
4
)
{
if
(request.status
==
200
)
{
parseMessage();
}
else
{
alert(
"
不能得到方法信息:
"
+
req.statusText);
}
}
}
五、解析返回XML、操作Dom以实现页面动态变化
//
解析返回xml的方法
function
parseMessage()
{
var
xmlDoc
=
request.responseXML.documentElement;
if
(xmlDoc.nodeName
==
"
apis
"
)
{
updateApi(xmlDoc);
}
else
if
(xmlDoc.nodeName
==
"
methods
"
)
{
updateMethod(xmlDoc);
}
else
if
(xmlDoc.nodeName
==
"
methodDetail
"
)
{
updateMethodDetail(xmlDoc);
}
else
{
alert(
"
NO Api
"
);
}
}
function
updateApi(xmlDoc)
{
var
apis
=
xmlDoc.getElementsByTagName(
"
api
"
);
var
apiul
=
document.getElementById(
"
apiul
"
);
equalCount(apis.length, apiul);
var
apiliArray
=
apiul.getElementsByTagName(
"
li
"
);
for
(
var
i
=
0
; i
<
apiliArray.length; i
++
)
{
apiliArray[i].onclick
=
function
()
{listMethod(
this
.id);}
var
apiId
=
apis[i].childNodes[
0
].firstChild.nodeValue;
apiliArray[i].id
=
"
api
"
+
apiId;
var
apiName
=
apis[i].childNodes[
1
].firstChild.nodeValue;
var
nameText
=
document.createTextNode(apiName);
apiliArray[i].removeChild(apiliArray[i].childNodes[
0
]);
apiliArray[i].appendChild(nameText);
}
}
posted on 2009-12-04 11:07
胖胖泡泡
阅读(142)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理