寒江雪
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---企業應用的開源構件庫
搜索
積分與排名
積分 - 116233
排名 - 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)
主站蜘蛛池模板:
免费a级毛片无码a∨性按摩
|
亚洲综合久久1区2区3区
|
亚洲AV无码一区二区三区牛牛
|
国产A∨免费精品视频
|
女人毛片a级大学毛片免费
|
久久久亚洲欧洲日产国码农村
|
国产成人亚洲精品电影
|
在线精品一卡乱码免费
|
亚洲处破女AV日韩精品
|
特级无码毛片免费视频
|
免费看国产精品3a黄的视频
|
亚洲视频在线一区
|
精品久久久久久国产免费了
|
国产免费观看青青草原网站
|
亚洲情A成黄在线观看动漫软件
|
国产一精品一av一免费爽爽
|
午夜国产大片免费观看
|
亚洲中文字幕一区精品自拍
|
99精品视频免费在线观看
|
国产成人麻豆亚洲综合无码精品
|
日韩欧美亚洲中文乱码
|
国产成人免费高清激情视频
|
久久亚洲熟女cc98cm
|
国产精品网站在线观看免费传媒
|
亚洲国产成人a精品不卡在线
|
亚洲一线产区二线产区区
|
国产91免费在线观看
|
亚洲人成依人成综合网
|
青柠影视在线观看免费高清
|
亚洲91精品麻豆国产系列在线
|
无码精品国产一区二区三区免费
|
亚洲综合精品网站在线观看
|
黄色一级视频免费
|
国产高清免费在线
|
亚洲hairy多毛pics大全
|
中文字幕无码不卡免费视频
|
亚洲免费二区三区
|
亚洲精品视频在线播放
|
97在线视频免费播放
|
久久久影院亚洲精品
|
日本高清免费观看
|