??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99伊人,91精品啪在线观看国产手机,eeuss影院在线播放http://www.aygfsteel.com/libin2722/category/30614.html虚其心,可解天下之问Q专其心Q可d下之学;静其心,可?zhn)天下之理Q恒其心Q可成天下之业?/description>zh-cnFri, 04 Apr 2008 04:48:14 GMTFri, 04 Apr 2008 04:48:14 GMT60DWR 入門與應用(三)http://www.aygfsteel.com/libin2722/articles/190766.htmlC物C物Fri, 04 Apr 2008 03:37:00 GMThttp://www.aygfsteel.com/libin2722/articles/190766.htmlhttp://www.aygfsteel.com/libin2722/comments/190766.htmlhttp://www.aygfsteel.com/libin2722/articles/190766.html#Feedback0http://www.aygfsteel.com/libin2722/comments/commentRss/190766.htmlhttp://www.aygfsteel.com/libin2722/services/trackbacks/190766.html來寫個AJAX版的聊天室吧Q先看看直接使用AJAX要如何做刎ͼ首先需要一個簡單的聊天室Servlet…
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package onlyfun.caterpillar;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedList;
import java.util.List;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class ChatRoomServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
private static LinkedList<Message> messages = new LinkedList<Message>();

public ChatRoomServlet() {
super();
}

private List<Message> addMessage(String text) {
if (text != null && text.trim().length() > 0) {
messages.addFirst(new Message(text));
while (messages.size() > 10) {
messages.removeLast();
}
}
 
return messages;
}
 
private List<Message> getMessages() {
return messages;
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Message> list = null;

if("send".equals(request.getParameter("task"))) {
list = addMessage(request.getParameter("msg"));
}
else if("query".equals(request.getParameter("task"))){
list = getMessages();
}
 
PrintWriter out = response.getWriter();
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
 
out.println("<response>");
for(int i = 0; i < list.size(); i++) {
String msg = list.get(i).getText();
out.println("<message>" + msg + "</message>");
}
out.println("</response>");
}
}


Message物g如下…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package onlyfun.caterpillar;
 
public class Message {
private long id = System.currentTimeMillis();
private String text;

public Message(String newtext) {
text = newtext;
if (text.length() > 256) {
text = text.substring(0, 256);
}
text = text.replace('<', '[');
text = text.replace('&', '_');
}
 
public long getId() {
return id;
}
 
public String getText() {
return text;
}
}


Servlet接受a息新增與查詢,判斷的方式是檢查請求參數task是send或query?

Servlet會以XML傛_目前List當中的訊息,客戶端可以查詢或插入新訊息時Q取得目前List中的a息Q接著在web.xml中設定一?#8230;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>
</description>
<display-name>
ChatRoomServlet</display-name>
<servlet-name>ChatRoomServlet</servlet-name>
<servlet-class>
onlyfun.caterpillar.ChatRoomServlet</servlet-class>
</servlet>
 
<servlet-mapping>
<servlet-name>ChatRoomServlet</servlet-name>
<url-pattern>/ChatRoomServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>


在網頁中Q用者可以在輸入a息後按下按鈕送出資訊Q並在XML回應取得時,訊息以一列一列的表格方式示ZQ另外還a定了週期性的輪詢Q即使不輸入新訊息,也可以週期性的取得新的聊天a息…
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Chat Room</title>
 
<script type="text/javascript">
var xmlHttp;
 
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
 
function sendMessage() {
var msg = document.getElementById("text").value;

if(msg == "") {
refreshMessage();
return;
}

var param = "task=send&msg=" + msg;
ajaxRequest(param);
document.getElementById("text").value = "";
}
 
function queryMessage() {
var param = "task=query";
ajaxRequest(param);
}
 
function ajaxRequest(param) {
var url = "ChatRoomServlet?timestamp" + new Date().getTime();
createXMLHttpRequest();
xmlHttp.onreadystatechange = refreshMessage;
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded;");
xmlHttp.send(param);
}

function refreshMessage() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
var messages = xmlHttp.responseXML.getElementsByTagName("message");

var table_body = document.getElementById("dynamicUpdateArea");
var length = table_body.childNodes.length;
for (var i = 0; i < length; i++) {
table_body.removeChild(table_body.childNodes[0]);
}

var length = messages.length;
for(var i = length - 1; i >= 0 ; i--) {
var message = messages[i].firstChild.data;
var row = createRow(message);

table_body.appendChild(row);
}
setTimeout("queryMessage()", 2000);
}
}
}
 
function createRow(message) {
var row = document.createElement("tr");
var cell = document.createElement("td");
var cell_data = document.createTextNode(message);
cell.appendChild(cell_data);
row.appendChild(cell);
return row;
}
 
</script>
 
</head>
<body>
 
<p>
Your Message:
<input id="text"/>
<input type="button" value="Send"
onclick="sendMessage()"/>
</p>
 
<p>Messages:</p>
<table align="left">
<tbody id="dynamicUpdateArea"></tbody>
</table>
 
</body>
</html>


單抓個畫?#8230; 


直接用AJAXQ後端用JSP/ServletQ?zhn)要對請求參數做些判斷Q看看是新增a息或查詢,並要自行輸出XMLQ有的沒?#8230;

Ҏ(gu)DWR的話Q就很簡單了Q寫個簡單的Java物g…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package onlyfun.caterpillar;
 
import java.util.LinkedList;
import java.util.List;
 
public class Chat {
private static LinkedList<Message> messages = new LinkedList<Message>();
 
public List addMessage(String text) {
if (text != null && text.trim().length() > 0) {
messages.addFirst(new Message(text));
while (messages.size() > 10) {
messages.removeLast();
}
}

return messages;
}
 
public List getMessages() {
return messages;
}
}


接著…在dwr.xml中開放一?#8230;
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
<allow>
 
<create creator="new" javascript="Chat">
<param name="class" value="onlyfun.caterpillar.Chat"/>
</create>

<convert converter="bean" match="onlyfun.caterpillar.Message"/>
</allow>
</dwr>


使用者取得訊息時Q是直接傛_List物gQ而List中裝的是Message物gQMessage物g是自a物Ӟcontervera定?beanQ表CDWR會自動將Message的getter名稱轉換為傳回客戶端的JavaScript物g中的屬性,例如Message中有 getText()Q則在客戶端可以用message.text這樣的方式來存取?

接著是簡單的客戶端網?#8230;
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
 
<script src="dwr/interface/Chat.js" type="text/javascript"></script>
<script src="dwr/engine.js" type="text/javascript"></script>
<script src="dwr/util.js" type="text/javascript"></script>
 
<script type="text/javascript">
function sendMessage() {
var text = DWRUtil.getValue("text");
DWRUtil.setValue("text", "");
Chat.addMessage(text, gotMessages);
}
 
function gotMessages(messages) {
var chatlog = "";
for (var data in messages) {
chatlog = "<div>" + messages[data].text +
"</div>" + chatlog;
}
DWRUtil.setValue("chatlog", chatlog);
setTimeout("queryMessage()", 2000);
}
 
function queryMessage() {
Chat.getMessages(gotMessages);
}
</script>
 
</head>
<body>
 
<p>
Your Message:
<input id="text"/>
<input type="button" value="Send"
onclick="sendMessage()"/>
</p>
 
<p>Messages:</p>
<div id="chatlog"></div>
 
</body>
</html>


當List物g傛_時,它成為gotMessages(messages)中的messages物gQ而messages物g中包?Message物g轉換後對應的JavaScript物gQ由於我們已E設定了ConverterQ所以可以用messages[data].text?取得傛_的訊?#8230;

單抓個畫?#8230;



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1311605



C物 2008-04-04 11:37 发表评论
]]>
DWR 入門與應用(二)http://www.aygfsteel.com/libin2722/articles/190765.htmlC物C物Fri, 04 Apr 2008 03:35:00 GMThttp://www.aygfsteel.com/libin2722/articles/190765.htmlhttp://www.aygfsteel.com/libin2722/comments/190765.htmlhttp://www.aygfsteel.com/libin2722/articles/190765.html#Feedback0http://www.aygfsteel.com/libin2722/comments/commentRss/190765.htmlhttp://www.aygfsteel.com/libin2722/services/trackbacks/190765.html假設(zhn)要從資料n中查詢出一些字Ԍ然後填寫到表單的下拉選單中?

例如一個示意的JavaE式如下Q?
1
2
3
4
5
6
7
8
package onlyfun.caterpillar;
 
public class Option {
public String[] getOptions() {
// 實際上這些字串是從資料庫中查到的啦…
return new String[] {"良葛?, "毛美?, "c_?};
}
}


傛_的字串陣列,(zhn)要填寫C拉選單中Q當Ӟ首先我們要在dwr.xml中開發這個物?#8230;
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
<allow>
<create creator="new" javascript="OPT">
<param name="class" value="onlyfun.caterpillar.Option"/>
</create>
</allow>
</dwr>


這是我們的E頁…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<script src="option.js" type="text/javascript"></script>
<script src="dwr/interface/OPT.js" type="text/javascript"></script>
<script src="dwr/engine.js" type="text/javascript"></script>
<script src="dwr/util.js" type="text/javascript"></script>
 
</head>
 
<body>
達R: <select id="opts"></select>
</body>
</html>


傛_的字串陣列會填入opts這個select中,我們的option.js如下…
1
2
3
4
5
6
7
8
window.onload = function() {
OPT.getOptions(populate);
};
 
function populate(list){
DWRUtil.removeAllOptions("opts");
DWRUtil.addOptions("opts", list);
}


夠簡單了…不需要解釋了…

看一下結?#8230; 


好啦Q我知道有h在說了,這個程式有夠無?#8230;Dead

改一下!是個不錯的例了,例如連動方塊Q唔Q在Ajax in action中叫啥?Dynamic double comboQ?#8230;

假設一個會d資料庫中查詢資料的JavaE式C意如下Q?
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
package onlyfun.caterpillar;
 
import java.util.Map;
import java.util.TreeMap;
 
public class Bike {
  private Map<String, String[]> bikes;
  
  public Bike() {
    bikes = new TreeMap<String, String[]>();
    bikes.put("2000", new String[] {"2000 T1", "2000 T2", "2000 T3"});
    bikes.put("2001", new String[] {"2001 A1", "2001 A2"});
    bikes.put("2002", new String[] {"2002 BW1", "2002 BW2", "2002 BW"});
    bikes.put("2003", new String[] {"2003 S320"});
    bikes.put("2004", new String[] {"2004 TA1", "2004 TA2", "2004 TA3"});
  }
  
  public String[] getYears() {
    String[] keys = new String[bikes.size()];
    int i = 0;
    for(String key : bikes.keySet()) {
      keys[i++] = key;
    }
    return keys;
  }
  
  public String[] getBikes(String year) {
    return bikes.get(year);
  }
}


getYears()跟getBkies()分別表示產品的年份跟型號Q這邊用Map模擬Q實際上資料是來自資料n的查詢?

一樣的Q在dwr.xml中設定:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
<allow>
<create creator="new" javascript="Bike" scope="application">
<param name="class" value="onlyfun.caterpillar.Bike"/>
</create>
</allow>
</dwr>


我們會有個腳t車q䆾與型號查詢頁面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
<script type='text/javascript' src='dwr/interface/Bike.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='bike.js'></script>
</head>
<body onload="refreshYearList();">
  q䆾Q?lt;select id="years" onchange="refreshBikeList();"></select><br/><br/>
  型號Q?lt;select id="bikes"></select><br/>
</body>
</html>


注意Q在選完W一個年份後Q會觸發o(j)nchange事gQ接著第二個下拉選單會自動填上應q䆾的型號,而不是按鈕按下,再去取得W二個下拉選單,然後refresh...blah...blah...

bike.js如下…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function refreshYearList() {
Bike.getYears(populateYearList);
}
 
function populateYearList(list){
DWRUtil.removeAllOptions("years");
DWRUtil.addOptions("years", list);
refreshBikeList();
}
 
function refreshBikeList() {
var year = $("years").value;
Bike.getBikes(year, populateBikeList);
}
 
function populateBikeList(list){
DWRUtil.removeAllOptions("bikes");
DWRUtil.addOptions("bikes", list);
}


一樣很單…

看個無聊的畫面…XD






C物 2008-04-04 11:35 发表评论
]]>
DWR 入門與應用(一Q?http://www.aygfsteel.com/libin2722/articles/190764.htmlC物C物Fri, 04 Apr 2008 03:34:00 GMThttp://www.aygfsteel.com/libin2722/articles/190764.htmlhttp://www.aygfsteel.com/libin2722/comments/190764.htmlhttp://www.aygfsteel.com/libin2722/articles/190764.html#Feedback0http://www.aygfsteel.com/libin2722/comments/commentRss/190764.htmlhttp://www.aygfsteel.com/libin2722/services/trackbacks/190764.htmlhttp://getahead.ltd.uk/dwr/ 下載 dwr.jarQ放到WEB-INF/lib?#8230;

負K處理客戶端請求,並呼叫Java物g的是DWRServletQDWR其實也有些Model 2的味道,只是View的這一層比較弱Q因為放到客戶端的JavaScript應用E式?#8230;

在web.xml中加入DWRServlet…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
ajaxDWR</display-name>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<description>
</description>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>


接下來寫個簡單的Hello吧!
1
2
3
4
5
6
7
package onlyfun.caterpillar;
 
public class Hello {
public String hello(String name) {
return "哈囉Q? + name + "Q?zhn)的第一個DWRQ?;
}
}


客戶端要呼叫這個Java物gQ傳i它參數Q而後傛_一個字Ԍ客戶端再示這個字Ԍ奇Q其實是要告aDWRServlet這g事,這需要一個dwr.xmlQ?
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
<allow>
<create creator="new" javascript="Hello">
<param name="class" value="onlyfun.caterpillar.Hello" />
</create>
</allow>
</dwr>


creatora定為newQ表CZ用Hello的無參數建構子來生成物gQjavascripta定為HelloQ表C客戶端JavaScriptE式可以使用Hello來呼叫對應的onlyfun.caterpillar.Hello物g?

來寫個客戶端的網頁,當中有一個入欄?#8230;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>W一個DWRE式</title>
<script type='text/javascript' src='dwr/interface/Hello.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='hello.js'></script>
</head>
<body>
 
<input id="user" type="text" />
<input type='button' value='哈囉' onclick='hello();' />
 
<div id="result"></div>
 
</body>
</html>


dwr/interface/Hello.js是由DWRServletҎ(gu)dwr.xml中的a定生成的,engine.js負K客戶端伺服端溝通,util.js是一些好用的JavaScriptE式Q可以讓(zhn)少寫很多JavaScript?

hello.js是我們自a的函式Q按下按鈕後Q會呼叫當中的hello()函式Q?
1
2
3
4
5
6
7
8
function hello() {
var user = $('user').value;
Hello.hello(user, callback);
}
 
function callback(msg) {
DWRUtil.setValue('result', msg);
}


${'user'}取得輸入Ƅ位的DOM物gQvalue取得當中的欄位|而後呼叫Hello.hello()Q並value當作參數傳?#8230; i果是呼叫Server端的Hello Java物gQ當i果傛_後,會呼叫JavaScript的callback函式QDWRUtil的setValue()Ҏ(gu)會將傛_的msga定i指?id的DOMQ結果就?#8230;啥!AJAX的功能在?#8230;這個而言是發出非同步請求,而回應不用Refresh頁面啦! 


好啦Q這個無聊的Hello DWR可以做啥Q?#8230;XD

已經可以讓?zhn)做個簡單的文字提示功能?#8230;像這?#8230;
http://caterpillar.onlyfun.net/Gossip/index.html

把滑鼠指到書的照片上Q會示提示文字Q這些提示文字本n不是存在E頁上的Q而是在Server端,當滑鼠指到書上時Q會用Request objectLQ然後顯C在框框?#8230;

當然Q我的網站只支援PHPQ所以那不是DWR完成的功能,而且我是直接用Request object跟DOML慢刻?#8230;初學者來說已E有些麻煩了…XD

不過Q用DWR可以很單完成這個功?#8230;

先寫個Java別吧!會抓properties檔案中的文字a息Q例?#8230;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package onlyfun.caterpillar;
 
import java.util.ResourceBundle;
 
public class Book {
private ResourceBundle resource;

public Book() {
resource = ResourceBundle.getBundle("book");
}

public String getDescription(String key) {
return resource.getString(key);
}
}


從程式中q道,它會Lbook_zh_TW.properties的資料,這不是重點啦Q只是Java的一個功能,我們要看的是DWRQ不過先把book_zh_TW.properties準備?#8230;
1
2
3
java=Java 學習{記的介?… BlaBla...
spring=Spring 技術手冊的介紹…BlaBla...
ajax=Ajax in action 中文版的介紹…


唔!裏頭是中文字Q自qnative2ascii轉換?#8230;這也不是重點…我們是要看DWR怎麼做到文字提示功能…

一樣的…要開N個Book物gQ在dwr.xml?#8230;
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
<allow>
<create creator="new" javascript="Book" scope="application">
<param name="class" value="onlyfun.caterpillar.Book"/>
</create>
</allow>
</dwr>


scopea定為applicationQ表C這個Book物g在整個應用程式階D都z著?

然後Q客戶端寫個網?#8230;
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
32
33
34
35
36
37
38
39
40
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<script type='text/javascript' src='dwr/interface/Book.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='book.js'></script>
<title>個h著/譯作</title>
</head>
<body>
 
<div id="ajax" onmouseover="getBookData(this);"
onmouseout="clearData();"><a
href="http://www.gotop.com.tw/waweb2004/home/home.aspx?pg=HM010X&bn=AXP011800"><small><img
style="border: 0px solid ; width: 80px; height: 110px; float: left;"
alt="Ajax in action 中文? title="Ajax in action 中文?
src="images/ajax_in_action_c.jpg" hspace="10" vspace="2"></small></a></div>
 
<div id="spring" onmouseover="getBookData(this);"
onmouseout="clearData();"><a
href="http://www.gotop.com.tw/waweb2004/home/home.aspx?pg=HM010X&bn=ACL021000"><small><img
style="border: 0px solid ; width: 80px; height: 110px; float: left;"
alt="Spring 技術手? title="Spring 技術手?
src="images/SpringTech_S.jpg" hspace="10" vspace="2"></small></a></div>
 
<div id="java" onmouseover="getBookData(this);"
onmouseout="clearData();"><a
href="http://www.gotop.com.tw/waweb2004/home/home.aspx?pg=HM010X&bn=ACL020931"><small><img
style="border: 0px solid ; width: 80px; height: 110px; float: left;"
alt="Java 學習{記" title="Java 學習{記"
src="images/JavaGossip_Cover_Small.jpg" hspace="10"
vspace="2"></small></a></div>

<br/><br/><br/><br/><br/><br/>

<div id="info"></div>
 
</body>
</html>


重點在於o(j)nmouseover跟onmouseoutQ滑鼠移入與Ud時會呼叫的函式,還有最下面的infoQ抓回來的書c介Ҏ(gu)攑ֈ當中…

book.js如下Q簡單的?#8230;
1
2
3
4
5
6
7
8
9
10
11
function getBookData(ele) {
Book.getDescription(ele.id, setBookData);
}
 
function setBookData(description) {
DWRUtil.setValue('info', description);
}
 
function clearData() {
DWRUtil.setValue('info', '');
}


E式很簡單,我懶得解釋了…XD

看一下畫面好?#8230;這是滑鼠Ud Ajax in action中文?/font> 上的介紹畫面…



C物 2008-04-04 11:34 发表评论
]]>
վ֩ģ壺 Դ| | ƺ| Դ| | ײ| | | ԣ| ̨| ̫| Т| ӥ̶| Ͻ| Ϫ| | | ʯ| ޽| | ɼ| ˮ| ԭ| | ®| | ӱ| ϰ| | ͬ| | | ʦ| ƽȪ| Ӣ| | | | ؼ| ̨| ɽ|