寒江雪
BlogJava
首頁
新隨筆
聯系
聚合
管理
posts - 8, comments - 174, trackbacks - 0
struts2.0 + ajax + xml (附源碼)
程序更新:1、添加了對頁面顯示數據量的控制。
2、添加了刪除數據后,動態刷新表數據功能。
源碼下載:
test.rar
更新文件:1、index.jsp
2、UserAction.java
注意事項:1、由于加包后文件太大,源碼中沒有struts2.0 相關jar包。
2、該程序沒有用到數據庫,加入jar包后直接在web容器上運行即可。
3、如果需要完整的源碼,請留言你的郵箱,或者聯系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;
//
刪除數據所在的行id
var
deleteRowId;
/**/
/*
*
* 發送請求、調用回調方法
*
* @param url: 請求的URL
* afterMothod:請求返回時所調用的方法名稱(回調方法)
*
*/
function
showHint(url,afterMothod)
{
try
{
xmlHttp
=
GetXmlHttpObject(afterMothod);
xmlHttp.open(
"
GET
"
,url,
false
);
xmlHttp.send(
null
);
}
catch
(e)
{
alert(e);
}
}
/**/
/*
*
* 根據瀏覽器創建XmlHttp對象
*
* @param handler:請求返回時所調用的方法名稱(回調方法)
*
*/
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;
}
}
/**/
/*
*
* 請求返回是調用的回調方法
* 服務器段返回 user 信息以xml形式發送到客戶斷
* 解析 xml 數據,把數據展現給用戶
*
*/
function
flush()
{
try
{
if
(xmlHttp.readyState
==
4
||
xmlHttp.readyState
==
"
complete
"
)
{
//
得到返回過來的XML對象,進行數據處理
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數據,將數據刷新到userTable中
var
users
=
xmlDoc.getElementsByTagName(
"
user
"
);
//
插入數據前,先清空數據
clearTable(userTable);
for
(
var
i
=
0
;i
<
users.length;i
++
)
{
//
插入行
var
userRow
=
userTable.insertRow();
//
得到行標示
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);
}
}
/**/
/*
*
* 請求返回是調用的回調方法
* 刪除 user對象 服務器段返回刪除后的操作信息和 user 列表數據
* 客戶端將信息和數據展現給用戶
*
*/
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();
//
刪除成功后,刷新數據。
}
}
}
/**/
/*
*
* 清空數據表的數據
*
* @param opTable:所要清空的表對象
*
*/
function
clearTable(opTable)
{
var
size
=
opTable.rows.length;
for
(
var
i
=
2
;i
<
size;i
++
)
{
opTable.deleteRow(
2
);
}
}
/**/
/*
*
* 得到一頁顯示數據的個數
*
*/
function
getPageUserNumber()
{
return
size.value;
}
/**/
/*
*
* 動態的根據用戶選擇的顯示數進行動態返回刷新操作的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
>
顯示用戶數:
</
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
>
();
//
當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
月月鳥
閱讀(3050)
評論(17)
編輯
收藏
所屬分類:
ajax
FeedBack:
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-17 16:03 |
葉楓
謝了,運行通過。
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)[未登錄]
2007-08-17 21:33 |
david
wst0350@163.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)[未登錄]
2007-08-18 08:07 |
biyeqian
gymai@163.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)[未登錄]
2007-08-19 12:44 |
sclsch
mark一下。
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)[未登錄]
2007-08-19 12:44 |
sclsch
mark
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-20 12:45 |
ahanflw
請給我一份源碼謝謝!81773090@qq.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-24 09:16 |
薛端陽
我以前也作過這種方式的ajax提交,首先為什么要通過actionforward的jsp作為輸出內容的載體,直接response輸出就可以了,第二 我覺得我覺得ajax提交的處理不應該放在我們的action業務里面,他不算是一個具體的業務邏輯,可以用servlet或者webservice處理,應該是單獨的一層,如果您有什么好的見解,希望與您交流
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-24 13:51 |
小影
@薛端陽
1. 首先放到jsp中處理是將數據處理的邏輯與業務剝離,如果放在業務中去處理那么業務就會很龐大,代碼也就不太清晰,當然后有其他原因。
2. ajax的業務處理也需要一些信息處理,比如說數據驗證、權限問題等等,當然有的業務是不需要通過action就可以處理,比如說訪問一些公有的頁面等等,但是為了這些而單獨的去寫servlet或webservice那就完全沒有必要了,這樣顯的系統很雜亂。
當然這只是我個人的意見,大家也可以多多交流。
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-25 21:11 |
badi
非常感謝.
我的郵箱是
zhbadikill@163.com.
先謝謝了.
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-28 18:56 |
winson
非常感謝
我希望發給我 源碼
我的郵箱是
master6#163.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-08-31 15:56 |
ghdvb@126.com
感謝啊
我的郵箱
ghdvb@126.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-09-10 18:39 |
xhl
非常感謝
我希望發給我 源碼
我的郵箱是 xhl9500@163.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-09-28 23:42 |
sunbeam
非常感謝
希望發給我 源碼
我的郵箱是 sunxboy@gmail.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-10-17 11:29 |
fei
kary1109@sina.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2007-11-06 09:52 |
mark
也給我發一份,謝謝mark705@163.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2008-03-19 09:15 |
li
非常感謝
我希望發給我 源碼
l_w_qsoft@hotmail.com
回復
更多評論
#
re: struts2.0 + ajax + xml (附源碼)
2008-06-18 21:37 |
TYXING
TIANYXI@126.COM
THANK YOU
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
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)
新技術
文章檔案
(1)
2012年4月 (1)
其他
ext 中文文檔中心
javascirpt封裝庫API中文文檔
Flex中文網站
ORM Tool
中間件技術
娛樂
技術
dhtml學習
ext中文學習中心
Flex程序示例
prototype1.5.0中文API在線版
SpringSide---企業應用的開源構件庫
搜索
積分與排名
積分 - 116222
排名 - 504
最新隨筆
1.?PostgreSQL 數據庫性能提升的幾個方面
2.?收藏微軟面試智力題 (附答案)
3.?struts2.0 + ajax + xml (附源碼)
4.?經典收藏----和大家一同分享
5.?嘗試Flex3 令人振奮的新功能——framework持久化緩存
6.?LOG4J 之經典篇
7.?swing 選擇日期控件
8.?探討J2EE開發框架-----高手留言
9.?struts 2.0 + 原始 AJAX + XML
最新評論
1.?re: PostgreSQL 數據庫性能提升的幾個方面
評論內容較長,點擊標題查看
--月月鳥
2.?re: PostgreSQL 數據庫性能提升的幾個方面
評論內容較長,點擊標題查看
--月月鳥
3.?re: PostgreSQL 數據庫性能提升的幾個方面
評論內容較長,點擊標題查看
--pt
4.?re: PostgreSQL 數據庫性能提升的幾個方面
評論內容較長,點擊標題查看
--pt
5.?re: PostgreSQL 數據庫性能提升的幾個方面
評論內容較長,點擊標題查看
--pt
6.?re: PostgreSQL 數據庫性能提升的幾個方面
評論內容較長,點擊標題查看
--pt
7.?re: PostgreSQL 數據庫性能提升的幾個方面
黃金時時彩全能計劃王
黃金時時彩全能計劃王
--pt
8.?re: swing 選擇日期控件
@交口稱贊 郵箱arvinsw521403@163.com
--zhangyi
9.?re: swing 選擇日期控件
@交口稱贊 求下拉出時間的代碼!感激不盡
--zhangyi
10.?re: PostgreSQL 數據庫性能提升的幾個方面
評論內容較長,點擊標題查看
--pt
評論排行榜
1.?收藏微軟面試智力題 (附答案)(104)
2.?struts2.0 + ajax + xml (附源碼)(17)
3.?swing 選擇日期控件(13)
4.?探討J2EE開發框架-----高手留言(10)
5.?struts 2.0 + 原始 AJAX + XML(9)
6.?LOG4J 之經典篇(7)
7.?嘗試Flex3 令人振奮的新功能——framework持久化緩存(3)
8.?經典收藏----和大家一同分享(1)
主站蜘蛛池模板:
99精品国产免费久久久久久下载
|
男人j进女人p免费视频
|
免费播放一区二区三区
|
亚洲AV无码专区国产乱码电影
|
免费人成激情视频在线观看冫
|
在线免费观看污网站
|
日韩亚洲人成在线
|
日本高清免费不卡在线
|
国产亚洲午夜精品
|
久久精品国产精品亚洲
|
中文字幕免费观看全部电影
|
亚洲国产精品一区二区第一页
|
2021精品国产品免费观看
|
在线亚洲高清揄拍自拍一品区
|
妞干网免费观看视频
|
色一情一乱一伦一视频免费看
|
亚洲精品无码成人片在线观看
|
a级毛片免费完整视频
|
亚洲精品456在线播放
|
成人一a毛片免费视频
|
精品女同一区二区三区免费播放
|
亚洲熟伦熟女新五十路熟妇
|
久久国产精品免费观看
|
亚洲av午夜精品无码专区
|
国产又黄又爽又刺激的免费网址
|
国产免费区在线观看十分钟
|
a级毛片免费观看在线
|
中文字幕亚洲精品
|
成人免费视频一区
|
大妹子影视剧在线观看全集免费
|
亚洲人成电影在在线观看网色
|
免费精品一区二区三区在线观看
|
kk4kk免费视频毛片
|
亚洲国产综合在线
|
亚洲国产成人久久一区WWW
|
无码日韩精品一区二区免费暖暖
|
国产亚洲精品影视在线
|
亚洲夜夜欢A∨一区二区三区
|
亚洲人成网站色7799
|
亚洲日韩精品无码专区网址
|
成人免费毛片视频
|