鎴戝湪鏈€榪戠殑涓€涓?/span>
web
欏圭洰涓負浜嗗疄鐜?/span>
bookmark
鍔熻兘紕板埌浜?/span>
javascript
璺ㄥ煙璁塊棶鐨勯棶棰樸€傝搗鍒濓紝鍦?/span>
google
涓婃悳鐨勫緢澶氳В鍐蟲柟妗堝茍涓嶉€傜敤浜庢垜鐨勬儏褰紝鍙湪鏈変竴綃囨枃绔犱腑鎻愬埌鐨勮繙紼嬪姞杞?/span>
javascript
鏂規硶浠庣悊璁轟笂鐪嬪埌浜嗚В鍐崇殑甯屾湜銆備絾鍙儨浣滆€呭彧鏄竴絎斿甫榪囷紝騫舵湭鐢ㄤ緥瀛愯緇嗚鏄庯紝鎵€浠ヤ笉寰椾笉鎽哥儲浜嗕竴闃墊墠鎶婅繖涓棶棰樻悶瀹氥€傚湪姝わ紝甯屾湜閫氳繃鏈枃涓哄悓鏍瘋榪欎釜闂鍥版壈鐨勬湅鍙嬩滑鎻愪緵涓€涓В鍐蟲柟娉曚綔涓哄弬鑰冦€傚鏈夐敊璇紝嬈㈣繋鎸囨錛?/span>
Bookmark
鏄洰鍓嶈澶?/span>
web2.0
緗戠珯
(http://del.icio.us/, www.diigo.com
絳夛級閮芥彁渚涚殑鐑棬
feature
銆傚畠鑳藉皢浜掕仈緗戜笂鑷繁鍠滄鐨勭綉欏墊敹钘忓埌
Bookmark
鏈嶅姟鍣ㄤ笂銆傛湰鏂囪瑙e喅鐨勯棶棰樺氨鍙戠敓鍦ㄧ敤鎴鋒彁浜ょ綉欏?/span>
URL
錛堣繕鍖呮嫭
Tag, Notes
絳夛級緇?/span>
Bookmark
鏈嶅姟鍣ㄦ椂銆?/span>
鍏充簬
URL
鐨勬彁浜よ嚦灝戝彲浠ユ湁涓夌鏂瑰紡錛?/span>
1.聽聽聽聽聽聽
鐧婚檰
Bookmark
鏈嶅姟鍣ㄧ殑鎻愪氦欏甸潰錛屽皢瑕佹敹钘忕殑
URL
閫氳繃璇ラ〉闈㈡彁浜ょ粰鏈嶅姟鍣ㄣ€?/span>
2.聽聽聽聽聽聽
瀹夎嫻忚鍣ㄦ彃浠訛紝閫氳繃鎻掍歡灝?/span>
URL
鎻愪氦緇欐湇鍔″櫒銆?/span>
3.聽聽聽聽聽聽
浠?/span>
Bookmark
鏈嶅姟鍣ㄥ姩鎬佸姞杞?/span>
javascript
灝忓伐鍏峰埌褰撳墠欏甸潰錛岄€氳繃瀹冩潵瀹屾垚鎻愪氦宸ヤ綔銆傦紙鍙傝€?/span>
diigo
鐨勪緥瀛愶紝鏀惰棌涓€涓綉欏甸摼鎺ュ埌嫻忚鍣ㄦ敹钘忓す錛岄摼鎺ョ殑
URL
鏄竴孌?/span>
javascript
浠g爜錛屽畠浼氫粠鏈嶅姟鍣ㄥ姞杞戒竴孌?/span>
javascript
娉ㄥ叆褰撳墠緗戦〉錛?/span>
絎竴縐嶆柟寮忓紑鍙戣搗鏉ユ渶綆€鍗曪紝浣嗗鐢ㄦ埛鏉ヨ姣旇緝楹葷儲錛屾瘡嬈¢兘闇€瑕佸厛鐧婚檰
Bookmark
鏈嶅姟鍣ㄦ墠鑳藉畬鎴愭彁浜わ紱絎簩縐嶆柟寮忔垜騫朵笉鐔熸倝鎻掍歡寮€鍙戯紝鑰屼笖鐢ㄦ埛涔熶笉鍠滄澶鐨勬彃浠跺爢婊¤嚜宸辯殑嫻忚鍣紱絎笁縐嶆柟寮忓紑鍙戦毦搴﹀皬錛屽張閬垮厤浜嗘瘡嬈$櫥闄嗘湇鍔″櫒鐨勯夯鐑︼紝鎵€浠ユ垜鏈€緇堥噰鐢ㄤ簡瀹冦€?/span>
涓婇潰璁茬殑絎笁縐嶆柟寮忎腑鍔ㄦ€佸姞杞界殑
javascript
灝忓伐鍏烽櫎浜嗛渶瑕佺敓鎴?/span>
UI
渚涚敤鎴峰~鍐欎俊鎭紙
URL
錛?/span>
tag
錛?/span>
notes
絳夛級錛屽綋鐢ㄦ埛鐐瑰嚮鎻愪氦鐨勬椂鍊欙紝榪樿瀹屾垚涓庢湇鍔″櫒閫氫俊鐨勫姛鑳姐€傚湪娌℃湁璺ㄥ煙璁塊棶緇忛獙鐨勬儏鍐典笅錛屾渶鍏堟兂鍒扮殑褰撶劧鏄?/span>
ajax
錛佷絾寰堝揩灝變細鍙戠幇鏍規湰琛屼笉閫氥€?/span>
璺ㄥ煙璁塊棶錛岀畝鍗曟潵璇村氨鏄?/span>
A
緗戠珯鐨?/span>
javascript
浠g爜璇曞浘璁塊棶
B
緗戠珯錛屽寘鎷彁浜ゅ唴瀹瑰拰鑾峰彇鍐呭銆傜敱浜庡畨鍏ㄥ師鍥狅紝璺ㄥ煙璁塊棶鏄鍚勫ぇ嫻忚鍣ㄦ墍榛樿紱佹鐨勩€傚啓榪囪法鍩熻闂?/span>
ajax
鐨勬湅鍙嬬浉淇¢兘閬囧埌榪囪鍛婄煡鈥滄病鏈夋潈闄愨€濈殑鎯呭喌銆傞€氳繃
XMLHttp
鏉ュ彂閫佹暟鎹粰
Bookmark
鏈嶅姟鍣ㄧ殑灝濊瘯澶辮觸浜嗐€備簬鏄紝鐪嬪埌緗戜笂鐨勪竴浜涜祫鏂欙紝鎴戝張寮€濮嬪皾璇曠敤
javascript
灝忓伐鍏峰湪鐢ㄦ埛緗戦〉鍔ㄦ€佸垱寤轟竴涓殣钘忕殑
iframe, iframe
鐨?/span>
src
鎸囧悜鏈嶅姟鍣ㄧ殑涓€涓?/span>
servlet
錛岃瘯鍥鵑€氳繃璋冪敤
iframe
涓彁渚涚殑
javascript
鏉ュ畬鎴愪笌鏈嶅姟鍣ㄧ殑閫氫俊銆備絾涓嶅垢鐨勬槸錛岀敤鎴風綉欏典腑鐨?/span>
javascript
浠g爜璁塊棶
iframe
涔熻嫻忚鍣ㄥ綊涓鴻法鍩熻闂紙鐗規寚
iframe
鐨?/span>
src
鎸囧悜鍏跺畠緗戠珯鐨勬儏褰級錛屽皾璇曞啀嬈″け璐ャ€?/span>
鏈€緇堬紝鍦ㄤ竴綃囨枃绔犱腑鐪嬪埌錛屼笌
iframe
涓嶅悓錛屽鏋?/span>
A
緗戠珯浠?/span>
B
緗戠珯鍔犺澆
javascript
錛?/span>
A
緗戠珯鍙互鑷敱鐨勮闂
javascript
鐨勫唴瀹癸紝騫朵笉浼氳嫻忚鍣ㄨ涓烘槸璺ㄥ煙璁塊棶銆傛ā浠垮垰鎵?/span>
iframe
鐨勬€濊礬錛屽綋鐢ㄦ埛鐐瑰嚮鎻愪氦鏃訛紝鍙互鍔ㄦ€佸垱寤轟竴涓?/span>
javascript
瀵硅薄錛岃瀵硅薄鐨?/span>
src
鎸囧悜
Bookmark
鏈嶅姟鍣ㄧ殑涓€涓?/span>
servlet
錛屾敞鎰忥細
URL
銆?/span>
Tag
銆?/span>
Notes
銆?/span>
User
銆?/span>
Password
絳変俊鎭浣滀負
src URL
鍙傛暟浼犵粰鏈嶅姟鍣ㄣ€傝鐪嬩笅闈㈢殑浠g爜錛?/span>
var
url =
"http://localhost:8080/Deeryard/BookmarkServlet?"
+
聽聽聽聽聽聽聽聽聽聽
"url="
+ url_source +
"&"
+
"title="
+ title +
"&"
+
"tag="
+ tag +
"&"
+
"notes="
+ notes +
"&"
+
"user="
+ user
+ "&"
+
"password="
+ password;
url = encodeURI(url);
聽聽聽
//Submit to server with a trick
var
js_obj = document.createElement(
"script"
);
js_obj.type =
"text/javascript"
;
js_obj.setAttribute(
"src"
, url);
聽聽聽
//Get response from server by appending it to document
document.body.appendChild(js_obj);
涓婇潰渚嬪瓙涓紝
js_obj.setArrribute()
灝嗕俊鎭綔涓?/span>
src
鐨?/span>
URL
鍙傛暟鎻愪氦緇欎簡
Bookmark servlet
銆傞偅涔堢敤鎴峰張濡備綍鍙栧緱鏈嶅姟鍣ㄧ殑鍝嶅簲淇℃伅鍛紵絳旀灝辨槸鏈€鏈竴琛屼唬鐮侊紝
servlet
鐨勮緭鍑哄繀欏繪槸
javascript
浠g爜錛屽畠鍙互璋冪敤鐢ㄦ埛緗戦〉涓婄殑鍏朵粬
javascript
鍑芥暟錛屼互鍙婃搷浣?/span>
dom
瀵硅薄銆備笅闈㈢殑
servlet
浠g爜鐢熸垚浜嗕竴涓?/span>
javascript
鍑芥暟璋冪敤錛?/span>
out.write("onServerResponse(INADEQUATE_INFORMATION);");
document.body.appendChild(js_obj)
鎵ц鍚?/span>
onServerResponse(
INADEQUATE_INFORMATION)
灝變細寰楀埌鎵ц錛屼嬌瀹㈡埛緗戦〉鍝嶅簲鏈嶅姟鍣ㄧ粨鏋溿€傝繖鏍蜂竴涓畬鏁寸殑閫氫俊榪囩▼灝卞畬鎴愪簡銆?/span>
鏉ユ€葷粨涓€涓嬭繖涓渚嬶紝棣栧厛涓庡緢澶氳法鍩熻闂殑鎯呭艦涓嶅悓錛屾湰鏂囨彁鍒扮殑璺ㄥ煙璁塊棶闇€瑕佸鏈嶅姟鍣ㄧ榪涜鎺у埗錛屽嵆璁╂湇鍔″櫒绔?/span>
Servlet
鏉ラ€傚簲瀹㈡埛绔綉欏?/span>
javascript
鐨勯渶姹傦紱鑰屽叾浠栦竴浜涘父瑙佺殑渚嬪瓙鍒欏鏈嶅姟鍣ㄧ娌℃湁鎺у埗鑳藉姏錛屾瘮濡備粠鍏朵粬緗戠珯鎶撳唴瀹圭殑灝忓伔紼嬪簭銆傚彟澶栵紝闇€瑕佹敞鎰忕殑鏄繖縐嶆柟娉曚腑瀹為檯鐢ㄥ埌浜?/span>
get
鏂規硶鏉ユ彁浜や俊鎭紝浠庝竴浜涜祫鏂欎笂鐪嬪埌錛?/span>
get
鏂規硶姣忔鎻愪氦鐨勪俊鎭笉鑳借秴榪?/span>
2k
銆?/span>
2006-8-27
Perl 浣滀負涓€縐嶈剼鏈璦€鍙互瀹炴椂鍦扮敓鎴愬拰鎵ц浠g爜銆傝繖縐嶇壒鎬у彲浠ユ妸浠g爜鐨勭紪璇戞帹榪熷埌榪愯鏃訛紝鎵€浠ュ張縐頒負鈥滃姩鎬佷唬鐮佲€濄€傚彟澶栵紝 Perl 涔熷 Java 銆?/span> C++ 涓€鏍鋒彁渚涗簡寮傚父澶勭悊鏈哄埗銆傛湰鏂囧皢鍒濇鎺㈣ Perl 涓疄鐜板姩鎬佷唬鐮佸拰寮傚父澶勭悊鏈哄埗鐨勫嚱鏁幫細 eval 銆傚鏈夐敊璇笉瓚籌紝嬈㈣繋璁ㄨ鍜屾壒璇勬寚姝c€?/span>
eval 鍑芥暟鍙互鐪嬩綔鏄?/span> Perl 铏氭嫙鏈猴紝瀹冪殑鍙傛暟灝辨槸涓€孌?/span> Perl 浠g爜銆傚埄鐢?/span> 鈥檖erldoc 鈥揻 eval鈥?/font> 鍙互鑾峰彇 eval 鍑芥暟浣跨敤甯姪錛屽叾涓粙緇嶄簡瀹冪殑涓ょ浣跨敤鏂瑰紡錛?/span>
l聽聽聽聽聽聽聽聽
eval EXPR
EXPR 鏄竴涓殑琛ㄨ揪寮忥紝渚嬪錛?/span>
eval
"print $a"
;
eval
'print $a'
.
', $b'
;
eval
1
+
3
;
eval
'print '
.
'$a + $b, "\n"'
;
eval
$command;#$command = 鈥榩rint 鈥渉ello Perl鈥濃€?/span>
eval
$ARGV[0];
鍦ㄦ墽琛屾椂錛?/span> Perl 瑙i噴鍣ㄤ細棣栧厛瑙f瀽琛ㄨ揪寮忕殑鍊鹼紝鐒跺悗灝嗚〃杈懼紡鍊間綔涓轟竴鏉?/span> Perl 璇彞鎻掑叆褰撳墠鎵ц涓婁笅鏂囥€傛墍浠ワ紝鏂扮敓鎴愮殑璇彞涓?/span> eval 璇彞鏈韓鍏鋒湁鐩稿悓鐨勪笂涓嬫枃鐜銆傝繖縐嶆柟寮忎腑錛屾瘡嬈℃墽琛?/span> eval 璇彞錛岃〃杈懼紡閮戒細琚В鏋愩€傛墍浠ワ紝濡傛灉 eval EXPR 濡傛灉鍑虹幇鍦ㄥ驚鐜腑錛岃〃杈懼紡鍙兘浼氳瑙f瀽澶氭銆?/span> eval 鐨勮繖縐嶆柟寮忎嬌寰?/span> Perl 鑴氭湰紼嬪簭鑳藉疄鏃剁敓鎴愬拰鎵ц浠g爜錛屼粠鑰屽疄鐜頒簡鈥滃姩鎬佷唬鐮佲€濄€?/span>
l聽聽聽聽聽聽聽聽
eval BLOCK
BLOCK 鏄竴涓唬鐮佸潡錛屼緥濡傦細
eval {print $a};
eval {$a = 1, $b = 2, $c = $a + $b};
涓庣涓€縐嶆柟寮忎笉鍚岋紝 BLOCK 鍙細琚В鏋愪竴嬈★紝鐒跺悗鏁翠釜鎻掑叆褰撳墠 eval 鍑芥暟鎵€鍦ㄧ殑鎵ц涓婁笅鏂囥€傜敱浜庤В鏋愪笂鐨勬€ц兘鐨勪紭鍔匡紝浠ュ強鍙互鍦ㄧ紪璇戞椂榪涜浠g爜璇硶媯€鏌ワ紝榪欑鏂瑰紡閫氬父琚綔涓?/span> Perl 鐢ㄦ潵涓轟竴孌典唬鐮佹彁渚涘紓甯告崟鎹夋満鍒訛紝铏界劧鍓嶄竴縐嶆柟寮忎篃鍙互銆?/span>
鎸夊府鍔╃殑鍚嶇О錛岀О eval 鐨勫弬鏁扮▼搴忎負鈥滃皬紼嬪簭鈥?/span> (mini-program) 銆傚湪涓ょ鏂瑰紡涓紝 eval 鍑芥暟鐨勮繑鍥炲€奸兘鏄皬紼嬪簭鐨勬渶鍚庝竴鏉¤鍙ョ殑鍊鹼紝濡傛灉閬囧埌 return 璇彞錛屼笌瀛愪緥紼嬬浉鍚屻€?/span>
Script1:
#!/usr/bin/perl -w
push
(
@program,'$i = 1;');
push
(
@program,'$i = 3; $j = 2; $k = $i + $j');
push
(
@program, '$i = 3; return 24; $k = $i + $j');
foreach
$exp (@program)
{
聽聽聽
$rtn =eval($exp);
聽聽聽
print
$rtn,"\n";
}
Output:
1
5
24
|
濡傛灉灝忕▼搴忎腑鏈夎娉曢敊璇€佽繍琛屾椂閿欒閬囧埌 die 璇彞錛?/span> eval 灝嗚繑鍥?/span> undef 銆傞敊璇爜琚繚瀛樺湪 $@ 涓€?/span>
Script2:
#!/usr/bin/perl -w
push
(
@program, '$i = 3; die "error message"; $k = $i + $j');
foreach
$exp (@program)
{
聽聽聽
$rtn =eval($exp);
聽聽聽
if
(
!
defined
(
$rtn))
聽聽聽
{
聽聽聽聽聽聽
print
"Exception: "
,
$@,"\n";
聽聽聽
}
聽聽聽
else
聽聽聽
{
聽聽聽聽聽聽
print
$rtn,"\n";
聽聽聽
}
}
;
Output:
Exception: error message at (eval 1) line 1.
|
Script3:
#!/usr/bin/perl -w
# a run-time error
eval
'$answer ='
;聽聽
# sets $@
warn
$@ if$@;
Output:
syntax error at (eval 1) line 2, at EOF
|