寒江雪
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
posts - 8, comments - 174, trackbacks - 0
struts2.0 + ajax + xml (附源碼)
程序更新:1、添加了對頁面顯示數(shù)據(jù)量的控制。
2、添加了刪除數(shù)據(jù)后,動態(tài)刷新表數(shù)據(jù)功能。
源碼下載:
test.rar
更新文件:1、index.jsp
2、UserAction.java
注意事項:1、由于加包后文件太大,源碼中沒有struts2.0 相關(guān)jar包。
2、該程序沒有用到數(shù)據(jù)庫,加入jar包后直接在web容器上運(yùn)行即可。
3、如果需要完整的源碼,請留言你的郵箱,或者聯(lián)系QQ:303225497。
更新代碼:
index.jsp
<%
@ page language
=
"
java
"
pageEncoding
=
"
UTF-8
"
%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
title
>
test javascript
</
title
>
</
head
>
<
script
defer
="defer"
>
//
XMLHTTP對象
var
xmlHttp;
//
刪除數(shù)據(jù)所在的行id
var
deleteRowId;
/**/
/*
*
* 發(fā)送請求、調(diào)用回調(diào)方法
*
* @param url: 請求的URL
* afterMothod:請求返回時所調(diào)用的方法名稱(回調(diào)方法)
*
*/
function
showHint(url,afterMothod)
{
try
{
xmlHttp
=
GetXmlHttpObject(afterMothod);
xmlHttp.open(
"
GET
"
,url,
false
);
xmlHttp.send(
null
);
}
catch
(e)
{
alert(e);
}
}
/**/
/*
*
* 根據(jù)瀏覽器創(chuàng)建XmlHttp對象
*
* @param handler:請求返回時所調(diào)用的方法名稱(回調(diào)方法)
*
*/
function
GetXmlHttpObject(handler)
{
var
objXmlHttp
=
null
;
if
(navigator.userAgent.indexOf(
"
Opera
"
)
>=
0
)
{
alert(
"
This example doesn't work in Opera
"
);
return
;
}
if
(navigator.userAgent.indexOf(
"
MSIE
"
)
>=
0
)
{
var
strName
=
"
Msxml2.XMLHTTP
"
;
if
(navigator.appVersion.indexOf(
"
MSIE 5.5
"
)
>=
0
)
{
strName
=
"
Microsoft.XMLHTTP
"
;
}
try
{
objXmlHttp
=
new
ActiveXObject(strName);
objXmlHttp.onreadystatechange
=
handler;
return
objXmlHttp;
}
catch
(e)
{
alert(
"
Error. Scripting for ActiveX might be disabled
"
);
return
;
}
}
if
(navigator.userAgent.indexOf(
"
Mozilla
"
)
>=
0
)
{
objXmlHttp
=
new
XMLHttpRequest();
objXmlHttp.onload
=
handler;
objXmlHttp.onerror
=
handler;
return
objXmlHttp;
}
}
/**/
/*
*
* 請求返回是調(diào)用的回調(diào)方法
* 服務(wù)器段返回 user 信息以xml形式發(fā)送到客戶斷
* 解析 xml 數(shù)據(jù),把數(shù)據(jù)展現(xiàn)給用戶
*
*/
function
flush()
{
try
{
if
(xmlHttp.readyState
==
4
||
xmlHttp.readyState
==
"
complete
"
)
{
//
得到返回過來的XML對象,進(jìn)行數(shù)據(jù)處理
var
xmlDoc
=
new
ActiveXObject(
"
Microsoft.XMLDOM
"
);
xmlDoc.async
=
false
;
xmlDoc.loadXML(xmlHttp.responseText)
//
返回錯誤代碼,適合用于測試。
//
var error = xmlDoc.parseError.errorCode;
//
alert(error?xmlDoc.parseError.reason:"XML格式正確");
//
解析XML數(shù)據(jù),將數(shù)據(jù)刷新到userTable中
var
users
=
xmlDoc.getElementsByTagName(
"
user
"
);
//
插入數(shù)據(jù)前,先清空數(shù)據(jù)
clearTable(userTable);
for
(
var
i
=
0
;i
<
users.length;i
++
)
{
//
插入行
var
userRow
=
userTable.insertRow();
//
得到行標(biāo)示
var
rowId
=
userRow.rowIndex;
//
取到一個user對象
var
user
=
users[i];
//
插入序號列
var
userNum
=
userRow.insertCell();
userNum.innerHTML
=
"
<font size=4 color=5adf83><b>
"
+
(i
+
1
)
+
"
</b></font>
"
;
//
插入userid列
var
userId
=
userRow.insertCell();
//
顯示userid
userId.innerHTML
=
user.getAttribute(
"
userId
"
);
var
userName
=
userRow.insertCell();
userName.innerHTML
=
user.getAttribute(
"
userName
"
);
var
userTel
=
userRow.insertCell();
userTel.innerHTML
=
user.getAttribute(
"
userTel
"
);
var
userOp
=
userRow.insertCell();
//
生成刪除user的url
var
deleteUserURl
=
"
user!delete.action?userNumber=
"
+
getPageUserNumber()
+
"
&user.userId=
"
+
user.getAttribute(
"
userId
"
);
userOp.innerHTML
=
"
<a href=javascript:showHint('
"
+
deleteUserURl
+
"
',drop);>刪除</a>
"
;
}
}
}
catch
(e)
{
alert(e.description);
}
}
/**/
/*
*
* 請求返回是調(diào)用的回調(diào)方法
* 刪除 user對象 服務(wù)器段返回刪除后的操作信息和 user 列表數(shù)據(jù)
* 客戶端將信息和數(shù)據(jù)展現(xiàn)給用戶
*
*/
function
drop()
{
if
(xmlHttp.readyState
==
4
||
xmlHttp.readyState
==
"
complete
"
)
{
var
xmlDoc
=
new
ActiveXObject(
"
Microsoft.XMLDOM
"
);
xmlDoc.async
=
false
;
xmlDoc.loadXML(xmlHttp.responseText);
var
msg
=
xmlDoc.getElementsByTagName(
"
msg
"
)[
0
];
if
(msg.getAttribute(
"
isSuccess
"
)
==
"
false
"
)
{
alert(msg.getAttribute(
"
msgString
"
));
}
else
{
alert(msg.getAttribute(
"
msgString
"
));
flush();
//
刪除成功后,刷新數(shù)據(jù)。
}
}
}
/**/
/*
*
* 清空數(shù)據(jù)表的數(shù)據(jù)
*
* @param opTable:所要清空的表對象
*
*/
function
clearTable(opTable)
{
var
size
=
opTable.rows.length;
for
(
var
i
=
2
;i
<
size;i
++
)
{
opTable.deleteRow(
2
);
}
}
/**/
/*
*
* 得到一頁顯示數(shù)據(jù)的個數(shù)
*
*/
function
getPageUserNumber()
{
return
size.value;
}
/**/
/*
*
* 動態(tài)的根據(jù)用戶選擇的顯示數(shù)進(jìn)行動態(tài)返回刷新操作的URL
*
*/
function
getFlushUserURl()
{
return
"
user!list.action
"
+
"
?userNumber=
"
+
getPageUserNumber();
}
</
script
>
<
body
>
<
center
>
<
h3
>
用戶列表
</
h3
>
<
br
>
<
table
id
="userTable"
title
="用戶列表"
width
="60%"
>
<
tbody
align
="center"
>
<
tr
bgcolor
="#54821f"
>
<
th
width
="5%"
>
序號
</
th
>
<
th
width
="15%"
>
用戶ID
</
th
>
<
th
width
="15%"
>
姓名
</
th
>
<
th
width
="15%"
>
電話
</
th
>
<
th
width
="5%"
>
操作
</
th
>
<
tr
>
</
tbody
>
</
table
>
<
br
>
<
br
>
<
br
>
<
button
onclick
="showHint(getFlushUserURl(),flush);"
>
刷新
</
button
>
<
font
size
="2"
color
="blue"
><
b
>
顯示用戶數(shù):
</
b
></
font
>
<
select
id
="size"
name
="userSize"
>
<
option
value
="3"
selected
>
3
</
option
>
<
option
value
="5"
>
5
</
option
>
<
option
value
="10"
>
10
</
option
>
<
option
value
="15"
>
15
</
option
>
<
option
value
="20"
>
20
</
option
>
</
select
>
</
center
>
</
body
>
</
html
>
UserAction.java
package
com.wen.test;
import
java.util.List;
import
java.util.Random;
import
java.util.Vector;
import
com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings(
"
serial
"
)
public
class
UserAction
extends
ActionSupport
{
private
User user;
private
int
userNumber;
private
List
<
User
>
userList;
private
List
<
String
>
msgList;
public
String delete()
{
String id
=
user.getUserId();
msgList
=
new
Vector
<
String
>
();
//
當(dāng)userId第5為是4的時候刪除失敗
if
(id.charAt(
4
)
==
'
4
'
)
{
msgList.add(
"
false
"
);
msgList.add(
"
刪除ID為:
"
+
id
+
"
用戶失敗!!
"
);
}
else
{
//
刪除成功,做刪除操作
msgList.add(
"
true
"
);
msgList.add(
"
刪除ID為:
"
+
id
+
"
用戶成功!!
"
);
}
return
list();
}
public
String list()
{
userList
=
new
Vector
<
User
>
();
//
如果得不到usernuNmber,初始化為3。
userNumber
=
userNumber
==
0
?
3
: userNumber;
//
隨即得到 user 對象
for
(
int
i
=
0
; i
<
userNumber; i
++
)
{
user
=
new
User();
user.setUserId(
""
+
new
Random().nextInt());
user.setUserName(
"
name
"
+
new
Random().nextInt());
user.setUserTel(
"
pass
"
+
new
Random().nextInt());
userList.add(user);
}
return
SUCCESS;
}
public
User getUser()
{
return
user;
}
public
void
setUser(User user)
{
this
.user
=
user;
}
public
List getMsgList()
{
return
msgList;
}
public
List getUserList()
{
return
userList;
}
public
void
setUserNumber(
int
userNumber)
{
this
.userNumber
=
userNumber;
}
}
posted on 2007-08-17 15:24
月月鳥
閱讀(3060)
評論(17)
編輯
收藏
所屬分類:
ajax
FeedBack:
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-17 16:03 |
葉楓
謝了,運(yùn)行通過。
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)[未登錄]
2007-08-17 21:33 |
david
wst0350@163.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)[未登錄]
2007-08-18 08:07 |
biyeqian
gymai@163.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)[未登錄]
2007-08-19 12:44 |
sclsch
mark一下。
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)[未登錄]
2007-08-19 12:44 |
sclsch
mark
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-20 12:45 |
ahanflw
請給我一份源碼謝謝!81773090@qq.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-24 09:16 |
薛端陽
我以前也作過這種方式的ajax提交,首先為什么要通過actionforward的jsp作為輸出內(nèi)容的載體,直接response輸出就可以了,第二 我覺得我覺得ajax提交的處理不應(yīng)該放在我們的action業(yè)務(wù)里面,他不算是一個具體的業(yè)務(wù)邏輯,可以用servlet或者webservice處理,應(yīng)該是單獨的一層,如果您有什么好的見解,希望與您交流
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-24 13:51 |
小影
@薛端陽
1. 首先放到j(luò)sp中處理是將數(shù)據(jù)處理的邏輯與業(yè)務(wù)剝離,如果放在業(yè)務(wù)中去處理那么業(yè)務(wù)就會很龐大,代碼也就不太清晰,當(dāng)然后有其他原因。
2. ajax的業(yè)務(wù)處理也需要一些信息處理,比如說數(shù)據(jù)驗證、權(quán)限問題等等,當(dāng)然有的業(yè)務(wù)是不需要通過action就可以處理,比如說訪問一些公有的頁面等等,但是為了這些而單獨的去寫servlet或webservice那就完全沒有必要了,這樣顯的系統(tǒng)很雜亂。
當(dāng)然這只是我個人的意見,大家也可以多多交流。
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-25 21:11 |
badi
非常感謝.
我的郵箱是
zhbadikill@163.com.
先謝謝了.
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-28 18:56 |
winson
非常感謝
我希望發(fā)給我 源碼
我的郵箱是
master6#163.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-31 15:56 |
ghdvb@126.com
感謝啊
我的郵箱
ghdvb@126.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-09-10 18:39 |
xhl
非常感謝
我希望發(fā)給我 源碼
我的郵箱是 xhl9500@163.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-09-28 23:42 |
sunbeam
非常感謝
希望發(fā)給我 源碼
我的郵箱是 sunxboy@gmail.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-10-17 11:29 |
fei
kary1109@sina.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-11-06 09:52 |
mark
也給我發(fā)一份,謝謝mark705@163.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2008-03-19 09:15 |
li
非常感謝
我希望發(fā)給我 源碼
l_w_qsoft@hotmail.com
回復(fù)
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2008-06-18 21:37 |
TYXING
TIANYXI@126.COM
THANK YOU
回復(fù)
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
struts2.0 + ajax + xml (附源碼)
struts 2.0 + 原始 AJAX + XML
Copyright ©2025 月月鳥 Powered By:
博客園
模板提供:
滬江博客
<
2007年8月
>
日
一
二
三
四
五
六
29
30
31
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
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆分類
(8)
ajax(2)
eclipse
flex(1)
hibernate
ibatis
J2EE(1)
J2SE(1)
javascript
jsf
spring
struts
webwork
其他(3)
報表(report)
隨筆檔案
(8)
2007年8月 (8)
文章分類
(1)
flex
其他(1)
新技術(shù)
文章檔案
(1)
2012年4月 (1)
其他
ext 中文文檔中心
javascirpt封裝庫API中文文檔
Flex中文網(wǎng)站
ORM Tool
中間件技術(shù)
娛樂
技術(shù)
dhtml學(xué)習(xí)
ext中文學(xué)習(xí)中心
Flex程序示例
prototype1.5.0中文API在線版
SpringSide---企業(yè)應(yīng)用的開源構(gòu)件庫
搜索
積分與排名
積分 - 116562
排名 - 503
最新隨筆
1.?PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
2.?收藏微軟面試智力題 (附答案)
3.?struts2.0 + ajax + xml (附源碼)
4.?經(jīng)典收藏----和大家一同分享
5.?嘗試Flex3 令人振奮的新功能——framework持久化緩存
6.?LOG4J 之經(jīng)典篇
7.?swing 選擇日期控件
8.?探討J2EE開發(fā)框架-----高手留言
9.?struts 2.0 + 原始 AJAX + XML
最新評論
1.?re: PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
評論內(nèi)容較長,點擊標(biāo)題查看
--月月鳥
2.?re: PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
評論內(nèi)容較長,點擊標(biāo)題查看
--月月鳥
3.?re: PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
評論內(nèi)容較長,點擊標(biāo)題查看
--pt
4.?re: PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
評論內(nèi)容較長,點擊標(biāo)題查看
--pt
5.?re: PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
評論內(nèi)容較長,點擊標(biāo)題查看
--pt
6.?re: PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
評論內(nèi)容較長,點擊標(biāo)題查看
--pt
7.?re: PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
黃金時時彩全能計劃王
黃金時時彩全能計劃王
--pt
8.?re: swing 選擇日期控件
@交口稱贊 郵箱arvinsw521403@163.com
--zhangyi
9.?re: swing 選擇日期控件
@交口稱贊 求下拉出時間的代碼!感激不盡
--zhangyi
10.?re: PostgreSQL 數(shù)據(jù)庫性能提升的幾個方面
評論內(nèi)容較長,點擊標(biāo)題查看
--pt
評論排行榜
1.?收藏微軟面試智力題 (附答案)(104)
2.?struts2.0 + ajax + xml (附源碼)(17)
3.?swing 選擇日期控件(13)
4.?探討J2EE開發(fā)框架-----高手留言(10)
5.?struts 2.0 + 原始 AJAX + XML(9)
6.?LOG4J 之經(jīng)典篇(7)
7.?嘗試Flex3 令人振奮的新功能——framework持久化緩存(3)
8.?經(jīng)典收藏----和大家一同分享(1)
主站蜘蛛池模板:
亚洲成av人片天堂网
|
亚洲第一视频在线观看免费
|
久久亚洲国产精品五月天婷
|
精品韩国亚洲av无码不卡区
|
免费的黄色网页在线免费观看
|
av成人免费电影
|
亚洲av午夜成人片精品电影
|
全部一级一级毛片免费看
|
亚洲AⅤ无码一区二区三区在线
|
国产精品亚洲а∨无码播放
|
怡红院免费的全部视频
|
h在线观看视频免费网站
|
免费精品一区二区三区在线观看
|
又粗又黄又猛又爽大片免费
|
日韩色视频一区二区三区亚洲
|
免费一级做a爰片性色毛片
|
sihu国产精品永久免费
|
亚洲a一级免费视频
|
无码日韩人妻AV一区免费l
|
久久久久亚洲AV综合波多野结衣
|
国产中文字幕在线免费观看
|
亚洲午夜未满十八勿入
|
日韩欧美一区二区三区免费观看
|
中国极品美軳免费观看
|
亚洲AV一宅男色影视
|
免费人成在线观看69式小视频
|
亚洲午夜精品一区二区麻豆
|
四虎国产精品免费永久在线
|
亚洲视频在线观看视频
|
国产偷国产偷亚洲高清在线
|
无码中文在线二区免费
|
无码色偷偷亚洲国内自拍
|
国产成人麻豆亚洲综合无码精品
|
最近2019年免费中文字幕高清
|
亚洲AV无码XXX麻豆艾秋
|
亚洲精品国自产拍在线观看
|
日本xxxx色视频在线观看免费
|
亚洲成a人片在线看
|
国产AV无码专区亚洲AV手机麻豆
|
精品在线免费视频
|
114级毛片免费观看
|