ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>99热99re6国产在线播放,欧美成人免费在线,日韩成人免费在线http://www.aygfsteel.com/huj/zh-cnWed, 18 Jun 2025 07:57:44 GMTWed, 18 Jun 2025 07:57:44 GMT60Ajaxž®ç»“http://www.aygfsteel.com/huj/archive/2006/10/31/78275.htmlThe OneThe OneTue, 31 Oct 2006 07:03:00 GMThttp://www.aygfsteel.com/huj/archive/2006/10/31/78275.htmlhttp://www.aygfsteel.com/huj/comments/78275.htmlhttp://www.aygfsteel.com/huj/archive/2006/10/31/78275.html#Feedback0http://www.aygfsteel.com/huj/comments/commentRss/78275.htmlhttp://www.aygfsteel.com/huj/services/trackbacks/78275.html˜q™ä¸ªæœˆå·¥ä½œæ¯”较忙,再加上读了一æœ?lt;javascript权威指南>,˜q˜æœ‰....所以没有心上来写blog,˜q™ä¸ªæœˆæœ€åŽä¸€å¤©äº†,赶上来补下作ä¸?˜q™ä¸ªæœˆä¸»è¦ç ”½I¶äº†ä¸‹ajax,其实对于ajax,òq´åˆå…´è“v的时候玩˜q‡ä¸€é˜?也做˜q‡ä¸€äº›ä¸œä¸?当时的技术也处在异步调用,˜q”回xml,æ›´æ–°¾|‘页控äšg˜q™ä¸ªé˜¶æ®µ,半年˜q‡åŽ»äº?Prototype.js,DWR,TrimPath JSTemplate½{‰æŠ€æœ¯çš„æˆç†Ÿ,使ajaxæ›´åã^民化,使我们更å®ÒŽ˜“在自已的¾pȝ»Ÿä¸­ä‹Éç”?以下æ€È»“一下这个月学到的东ä¸?同时与以前ä‹É用ajax˜q›è¡Œå¯Òޝ”.
高çñ”javascriptæ€È»“
1.函数也是对象

var  myDog  =   {
    bark: 
function () {
        alert('Woof
! ');
    }

}
;

var  myCat  =   {
    meow: 
function () {
        alert('I am a lazy cat. I will not meow 
for  you.');
    }

}
;
 
function  annoyThePet(petFunction) {
    
// let's see what the pet can do
    petFunction();
}


// annoy the dog:
annoyThePet(myDog.bark);
// annoy the cat:
annoyThePet(myCat.meow);
2.数组,对象成员
js中创建对象以及给对象动态创建成�br />
var obj = {}; //new, empty object
obj['member_1'] = 'this is the member value';
obj['flag_2'] 
= false;
obj['some_function'] 
= function(){ /* do something */};
以上代码½{‰åŒ
var obj = {
    member_1:'
this is the member value',
    flag_2: 
false,
    some_function: 
function(){ /* do something */}
}
;
    
obj.some_function();
obj['some_function']();
上面代码表示在对象中使用成员,¾cÖM¼¼äºŽhash表中使用一个key.
3.在js中ä‹É用class
//defining a new class called Pet
var Pet = function(petName, age){
    
this.name = petName;
    
this.age = age;
}
;

//let's create an object of the Pet class
var famousDog = new Pet('Santa\'s Little Helper', 15);
alert('This pet is called ' 
+ famousDog.name);
JS中类的ç‘ô承一般通过prototype属æ€?br />
Pet.prototype.communicate = function(){ 
    alert('I 
do not know what I should say, but my name is ' + this.name);
}
;
用Prototype.js会简单一äº?prototype.js˜q™ä¸ªæ¡†æž¶çš„代码很值得一è¯?里面用到了很多高¾U§çš„JS技å·?巧妙的设计的许多优秀的设计方æ¡?
var Pet = Class.create();
Pet.prototype 
= {
    
//our 'constructor'
    initialize: function(petName, age){
        
this.name = petName;
        
this.age = age;
    }
,
    
    communicate: 
function(){
        alert('I 
do not know what I should say, but my name is ' + this.name);
    }

}
;    
        
4.ž®†å‡½æ•îC½œä¸ºå‚æ•?¾cÖM¼¼äºŽruby的闭包写æ³?br />
var myArray = ['first', 'second', 'third'];
myArray.each( 
function(item, index){
    alert('The item 
in the position #' + index + ' is:' + item);
}
 );


]]>
eXtremeTable体验http://www.aygfsteel.com/huj/archive/2006/09/21/71186.htmlThe OneThe OneThu, 21 Sep 2006 12:11:00 GMThttp://www.aygfsteel.com/huj/archive/2006/09/21/71186.htmlhttp://www.aygfsteel.com/huj/comments/71186.htmlhttp://www.aygfsteel.com/huj/archive/2006/09/21/71186.html#Feedback0http://www.aygfsteel.com/huj/comments/commentRss/71186.htmlhttp://www.aygfsteel.com/huj/services/trackbacks/71186.html阅读全文

]]>
一些值得珍藏的搞½W‘短ä¿?/title><link>http://www.aygfsteel.com/huj/archive/2006/09/19/70486.html</link><dc:creator>The One</dc:creator><author>The One</author><pubDate>Tue, 19 Sep 2006 03:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/huj/archive/2006/09/19/70486.html</guid><wfw:comment>http://www.aygfsteel.com/huj/comments/70486.html</wfw:comment><comments>http://www.aygfsteel.com/huj/archive/2006/09/19/70486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/huj/comments/commentRss/70486.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/huj/services/trackbacks/70486.html</trackback:ping><description><![CDATA[ <p> <br />那天遇见上帝åQŒä»–说答应我一个愿望,我说希望世界和åã^åQŒä»–说太难不好办。我拿出你的相片希望他把你变漂亮点,上帝接过你的相片è¯ß_¼šâ€œæ‹¿åœ°çƒä»ªæˆ‘再看看â€?</p> <p>  </p> <p>老婆是操作系¾lŸï¼Œä¸€æ—¦å®‰è£…卸载十分麻烦;二奶是互联网åQŒé£Žå…‰æ— é™èбé’׃¸æ–­ï¼›ž®èœœæ˜¯æ¡Œé¢ï¼Œåªè¦ä½ æœ‰å…´è¶£å¤©å¤©å¯ä»¥æ›´æ¢ã€?</p> <p>  </p> <p>我è°}代表党中央,国务院,全国人大åQŒä¸­å¤®å†›å§”,港澳台办公室向你提出强烈抗议åQšä½ æ˜¨æ™šž®¿åºŠç•™ä¸‹çš„ä¸­å›½åœ°å›¾äØ“å•¥æ²¡æœ‰å°æ¹¾ï¼åQï¼ä»Šæ™šè®°å¾—补上åQï¼åQ?</p> <p>  </p> <p>蚂蚁娶了蜈蚣为妻åQŒæ´žæˆ¿ä¹‹å¤œåŽåQŒé—®èš‚蚁有何感想åQŒèš‚蚁愤愤的è¯ß_¼šæ‰›_¼€ä¸€æ¡è…¿ä¸æ˜¯åQŒåˆæ‰›_¼€ä¸€æ¡è…¿ä¹Ÿä¸æ˜?.....妈的扳了一晚上的腿åQ?</p> <p>  </p> <p>一个赌徒的名字在每个国安™ƒ½ä¸ä¸€æ øP¼Œåœ¨æ—¥æœ¬å«å€’光银子åQŒä¿„¾|—斯叫苏斯里娃,韩国叫金徯‚‹åQŒåœ¨¾ŸŽå›½å«çº¦¾˜°çº¦‹‚®ï¼Œåœ¨ä¸­å›½å«è‹å®‰é€¸ï¼Œåœ¨å¯d国叫里瓦ž®”贝斯ã€?</p> <p>  </p> <p>某男入厕便秘åQŒå¿½è§ä¸€äººé£žå¥”而入åQŒé¡·åˆ»é£Žé›¨äº¤åŠ ã€‚â€œå“¥ä»¬ï¼ŒçœŸç±Mæ…•ä½ åQŒé‚£ä¹ˆå¿«åQâ€â€œç±Mæ…•å•¥åQŸï¼˜q˜æ²¡è„Þp£¤å­å‘¢åQï¼â€?</p> <p>  </p> <p>上联åQšæƒ³å½“åˆåQŒçº¢¾c³é¥­å—瓜汤,老婆一个孩子一班ã€?</p> <p>下联åQšçœ‹ä»Šå¤©åQŒç™½¾c³é¥­çŽ‹å…«æ±¤ï¼Œå­©å­ä¸€ä¸ªè€å©†ä¸€ç­ã€?</p> <p>横批åQšä¸Žæ—¶ä¿±˜q?</p> <p>  </p> <p>公牛出差åQŒææ¯ç‰›æ— äh照顾。便å¯ÀL€ï¼šçŒ´å­ç‹¡çŒ¾åQŒè€è™Žå‡¶æ®‹åQŒå”¯å¤§è±¡å¯é ã€‚不日公牛归来从象处领回夫ähåQŒæ¬¡æ—¥å…¬ç‰›æ€’æ–¥åQšç‰›B大了åQ?</p> <p>  </p> <p>一夫妇带吃奶的孩子去餐厅用˜¡ï¼Œå­©å­å“­é—¹åQŒå¥³äºø™µ¶ç´§æŽ€è¡£ï¼ŒæœåŠ¡ç”Ÿåˆ¶æ­¢ï¼Œå¥›_¤§æ€’:éšùN“˜q™ä¹Ÿä¸è¡Œå—?服务生说åQšéœ²èƒ¸å¯ä»¥ä½†ä¸èƒ½è‡ªå¸¦é¥®æ–™ã€?</p> <p>  </p> <p>计生办的工作人员åˆîC¸€ä¸ªå±±æ‘去‹‚€æŸ¥å·¥ä½œï¼Œå‘现­‘…生很严重,ž®±é—®è€ä¹¡åQšâ€œä½ ä»¬è¿™å„¿æ€Žä¹ˆ­‘…生˜q™ä¹ˆä¸¥é‡å‘¢ï¼Ÿâ€è€ä¹¡½{”道åQšâ€œæ²¡ç”µâ€ã€‚“没电就­‘…生呀åQâ€å½“官的生气地说。“没甉|²¡äº‹å¹²â€ã€‚“没事干咋了åQŸâ€å½“官的一脸困惑。“没事干åQŒå°±òq²é‚£äº‹å‘—。â€?</p> <p>  </p> <p>那英‹z—æ±M-é›ùN‡Œçœ‹èŠ±ã€‚æ¯›å®æ’’ž®?淘声依旧。董文华初夜-血染的风采。陈¾U¢æ‰å¥?常回家看看。彭丽媛大便-在希望的田野上。杨玉莹攑ֱ-轻轻的告诉你ã€?</p> <p>  </p> <p>有两个傻子想开鞋店åQŒå¬è¯´é³„鱼的鞋值钱åQŒä»–们就åŽÀL²³é‡ŒæŠ“鳄鱼了,˜q˜çœŸæ²¡å°‘抓,éƒ?0多只了。一个傻子说åQšâ€œå¤§å“¥ï¼ŒæŠ“到½W?0只鳄鱼它要是再没½I‰Kž‹å’±å°±åˆ«æŠ“了!åQï¼â€?</p> <p>  </p> <p>你拉着一头猪逛街åQŒå¾ˆòq¸ç¦çš„æ ·å­ï¼Œæˆ‘经˜q‡æ»¡æ€€åŒæƒ…的说åQšâ€œçœ‹ä¸€ä¸ªäh的档‹Æ¡ï¼Œž®Þqœ‹ä»–跟谁在一赗÷€‚”话未说完,ž®Þqœ‹é‚£çŒªå¾ˆé„™å¤ïLš„弃你而去åQ?</p> <p>  </p> <p>一ç”ähœªå¨Óž¼Œä¸€å¥Ïxœªå«ï¼Œ¾låª’äºÞZ»‹¾lä¸¤äººç»“合,ç”ïLš„自我介绍åQšä¸€æ†æžªåQŒä¸¤é¢—蛋åQ?8òq´æ²¡æŠ—战。女的:一扇窗åQŒä¸¤æ‰‡é—¨åQ?6òq´æ²¡˜q›äh。媒人曰åQšå‚»æ¯”傻蛋ã€?</p> <p>  </p> <p>油田åQŒä¸€å¯ÒŽ–°äººåˆšå®Œå©šã€‚对镉K€æ¥ä¸€å‰¯å¯¹è”,上联åQšæ–°äººæ–°äº•æ–°é’Õd¤´ã€‚下联:­‘Šé’»­‘Šæ·±­‘Šå‡ºæ²V€‚横批:月明松。(明字分开è¯Õd³å¯ï¼‰ </p> <p>  </p> <p>一个男生很喜欢一个女孩,一直都紧追不舍åQŒå¥³å­©å¯¹ç”ïL”Ÿåˆä¸æ„Ÿå†’åQŒç”±äºŽç”·ç”Ÿæ­»¾~ çƒ‚打,¾lˆäºŽæœ‰ä¸€å¤©å¥³ç”Ÿåœ¨ä¸Šè¯¾çš„æ—¶å€™è{íw«å¤§åŠ›çš„æ‹äº†æ¡Œå­åQŒå¤§å£°å¯¹ç”ïL”Ÿè¯ß_¼šä½ åˆ°åº•å–œ‹Æ¢æˆ‘什么阿åQï¼æˆ‘改˜q˜ä¸è¡Œä¹ˆåQŸï¼ŸåQ?</p> <p>  </p> <p>瘸子和瞎子同骑一辆èžR外出。瞎子骑åQŒç˜¸å­çœ‹è·¯ã€‚突然瘸子发现前面有一条深沟,急呼åQšâ€œæ²Ÿæ²Ÿæ²ŸåQâ€çžŽå­å›žå”±åˆ°åQšå™¢å˜?噢嘞 噢嘞åQäºŒäºÞZ¸€èµähŽ‰å…¥æ²Ÿä¸­ã€?</p> <p>  </p> <p>å±×ƒ¸œæ‰«ç›²åQŒè€å¸ˆåœ¨é»‘板上写“日”和“天”说åQšä¸€å¤©å°±æ˜¯ä¸€æ—¥ï¼Œä¸€æ—¥å°±æ˜¯ä¸€å¤©ã€‚下边一农妇è¯ß_¼šè€å¸ˆä½ è¯´çš„不对,一天一日行åQŒä¸€æ—¥ä¸€å¤©ä¿ºå¯å—不了ã€?</p> <p>  </p> <p>某äh在老婆怀å­?个月˜q˜åŒæˆ¿ï¼Œä¸€æœˆåŽç”Ÿä¸‹ä¸ªç”·å­©ï¼Œä¸€å‡ºç”Ÿž®±é—®åQšæˆ‘çˆ¸çˆ¸æ˜¯è°åQŸä»–è¯ß_¼šæ˜¯æˆ‘啊!于是男孩用手指狂戳他爸的头说åQšè¿™æ ähˆ³ä½ ç–¼ä¸ç–¼åQŸç–¼ä¸ç–¼åQ?</p> <p>  </p> <p>好朋友就象胸¾|©èˆ’服脓心永˜qœæ”¯æ’‘着你,象内裤就½Ž—你大è“v大落他永˜qœåŒ…容着你,˜q˜è±¡å«ç”Ÿå·¾ä½ ä¼¤å¿ƒ‹¹è¡€ä»–帮你擦åQŒæ›´è±¡é¿å­•套你捅了多大的娄子他都帮你兜着åQ?</p> <p>  </p> <p>ä¸€è€å†œä¸ø™¯•伟哥之效åQŒæ‹¿æ¥å–‚公鸡åQŒæ¬¡æ—¥è€å†œå‘现全村母鸡都被òq²æ­»ã€‚抬头见公鸡立于树梢åQŒé—®å…¶æ•…åQŒé¸¡æ›ŽÍ¼šâ€œæƒ³æ—¥è€é¹°â€?</p> <p>  </p> <p>我真的好累,你让我不停的换体位,换了前位换后位,你让我射了还不让我睡åQŒæœ€åŽè¿˜è®©æˆ‘谈体会,哎,ít¢çƒçœŸçš„好篏ã€?</p> <p>  </p> <p>¾l¿æÑa油的牧畜芽,大姑娘小媛_¦‡åœ°é‡Œçˆ¬ï¼Œè°è¦åœ¨æ¥åïL‰§ç•œï¼Œ¿Uä¸€åœ°å¤§è‚Œå…«ã€‚稀奇稀奇真½E€å¥‡ï¼Œå“ªæœ‰åœ°é‡Œ¿Uåˆçš„,要是你家的刁丰收了,你要预备多少大闺奟ë€?</p> <p>  </p> <p>和绅考纪晓岚åQŒå‡ºä¸Šè”åQšæ ‘ä¸Šæœ‰åªé¸ŸåQŒé¸Ÿæ‘‡æ ‘也摇åQŒé¸Ÿéƒ½é£žèµîCº†åQŒæ ‘˜q˜æ‘‡ä¸‰æ‘‡ã€‚纪晓岚对下联:和绅åŽÕd°¿ž®¿ï¼Œé¸Ÿæ‘‡ž®¿ä¹Ÿæ‘‡ï¼Œž®‰Kƒ½ž®¿å®Œäº†ï¼Œé¸Ÿè¿˜æ‘‡ä¸‰æ‘‡ã€?/p> <p>白天停水åQŒæ™šä¸Šåœç”µï¼Œå‘不出工资,ä¹îC¸äº†é¢åQŒæ‰“开邓选找åˆîCº†½{”案åQŒåŽŸæ¥æ˜¯½C¾ä¼šä¸ÖM¹‰åˆçñ”阶段。往后一¾˜»ï¼Œæˆ‘操/一癑ֹ´ä¸å˜/˜q™å¯å’‹åŠžåQ?</p> <p>  </p> <p>å’Œæ€È»Ÿç¡è§‰å«å›½ç¡ï¼Œå’Œä¹žä¸ç¡è§‰å«åœ°ç¡åQŒå’Œè€å©†ç¡è§‰å«æ‰€å¾—睡åQŒå’Œž®å§¨å­ç¡è§‰å«å¢žå€¼ç¡åQŒå’Œæƒ…äh睡觉叫偷睡,和小姐睡觉叫印花睡ã€?</p> <p>  </p> <p>丈夫开灯时不小心把手印留在刚刷˜q‡æÑa漆的墙壁上。次日,å¦Õd­å«æ¥æ²Ò޼†å·¥ï¼šæˆ‘想让你看看昨晚我丈夫摸˜q‡çš„地方。æÑa漆工晕倒…â€?</p> <p>  </p> <p>ž®æ˜ŽåQšçˆ¸çˆ¸ï¼Œå¤æ—¶å€™ï¼Œçš‡å¸è‡ªç§°å¯¡ähåQŒé‚£çš‡åŽè¯¥è‡ª¿UîC»€ä¹ˆï¼Ÿçˆ¶äº²åQšå‚»å­©å­åQŒé‚£çš‡åŽå½“ç„¶¿U°å¯¡å¦‡å•¦åQ?</p> <p>  </p> <p>护士看到病äh在病房喝酒,ž®Þpµ°˜q‡åŽ»ž®å£°å®å˜±è¯ß_¼šâ€œå°å¿ƒè‚åQâ€ç—…人微½W‘道åQšâ€œå°å®è´ã€‚â€?</p> <p>  </p> <p>生活¾ŸŽå¥½å¤šå¹¸¼›ï¼Œæœ‹å‹å¾ˆå¤šä¸å­¤ç‹¬ã€‚勇敢向前不服输åQŒå¹½é»˜çŸ­ä¿¡å‘¾l™çŒªåQŒçŒªæŽ¥çŸ­ä¿¡å°±½W‘了åQŒå›žä¿¡æˆ‘也不要了åQŒå°±å½“给猪上料了åQŒæ•ˆæžœæˆ‘也知道了ã€?</p> <p>  </p> <p>机密档案åQšå§“名:董全瑞;¾l°å·å››è™Žå­ï¼›æ­ÖMº¡åŽŸå› åQšè¿žé•¿è¯´åQšç‚¸è¯åŒ…一面有强力èƒÓž¼Œå•手托è“v¾_˜åœ¨¼„‰å ¡ä¸‹å°±è¡Œäº†åQ›äÍ¾lˆé—­a€åQšè¿žé•¿æˆ‘操你妈!两面都有胶ã€?</p> <p>  </p> <p>那天我看见你了,在超市,你悄悄地把手伸到条码扫描器上åQŒåªè§å±òq•显½CºçŒªíy?元,你以为机器坏了,把脸凑过åŽÈœ‹åQŒç»“果屏òq•显½CºçŒªå¤´è‚‰5å…ƒã€?</p> <p>  </p> <p>十岁男孩ž®é¸¡é¸¡ï¼ŒäºŒåå²ç”·å­©ä¾¦å¯Ÿé¸¡åQŒä¸‰åå²æˆ˜æ–—鸡,四十岁蘪炔R¸¡åQŒäº”十岁滑翔鸡,六十岁手扶拖拉鸡åQŒä¸ƒåå²éšåž‹é¸¡ï¼Œå…«åå²åœé¸¡ã€?</p> <p>  </p> <p>一农妇刚进城当保姆åQŒç»™ä¸ÖMh收拾床时发现一用过避孕套,不知是何物,侉K—®å¥³ä¸»äººã€?</p> <p>女主人反问:你们不做爱吗åQŸå†œå¦‡å›ž½{”:做,但没你们˜q™ç£¨ç‹‚,都脱皮了ã€?</p> <p>  </p> <p>我昨天才知道åQŒæœ‰ä¸€ä½MM愿意为我失去生命åQå‘µå‘µï¼Œå¥½æ„ŸåŠ¨ï¼å¥ÒŽ–©é’‰æˆªé“å¯¹æˆ‘说åQšä½ å†ç¼ ç€æˆ‘,我就åŽÀL­»...... </p> <p>  </p> <p>某è‚÷困山区,因无钱,男äh皆用ž®¿ç´ è¢‹åšå†…裤åQŒä¸€æ—¥æŸæ–îCh¾l“婚åQŒç”·é™¤åŽ»é•¿è£¤åQŒæ–°å¨˜æƒŠå«æ™•倒,只见内裤正面华ͼŒå‡€é‡?5公斤ã€?<br /></p> <img src ="http://www.aygfsteel.com/huj/aggbug/70486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/huj/" target="_blank">The One</a> 2006-09-19 11:54 <a href="http://www.aygfsteel.com/huj/archive/2006/09/19/70486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用acegi-security½Ž¡ç†æƒé™ http://www.aygfsteel.com/huj/archive/2006/09/16/70004.htmlThe OneThe OneSat, 16 Sep 2006 01:41:00 GMThttp://www.aygfsteel.com/huj/archive/2006/09/16/70004.htmlhttp://www.aygfsteel.com/huj/comments/70004.htmlhttp://www.aygfsteel.com/huj/archive/2006/09/16/70004.html#Feedback0http://www.aygfsteel.com/huj/comments/commentRss/70004.htmlhttp://www.aygfsteel.com/huj/services/trackbacks/70004.html


对于acegi-security用过spring的朋友一定听说过,早就惛_­¦ä¹ ä¸€ä¸?但一直没有机会用åQŒåŠ ä¸Šacegi-security本èín很复æ?½Ž—è“v来从打算学到现在差不多都一òq´å¤šäº?版本也从0.5升到äº?.1,æ­£åéy最˜q‘公司的业务处理中间件要提高安全æ€?要做一个权限管理控制的模块,本来如果直接写个拦截器就搞定äº?不过本着不求最快但求最好的思想,军_®šç”¨ä¸€ä¸‹å¤§åé¡¶™å¶çš„acegi-security,å’׃»¬ä¹Ÿæ¥çŽ©çŽ©RBACåQˆåŸºäºŽè§’色的权限控制åQ?参考了一些资æ–?主要来自springside,差不多搞明白了acegi-security是怎么回事,˜q™é‡Œä¸é‡å¤åˆ«äººçš„æ–‡å­—,主要谈谈我的使用¾léªŒ,如果是一般的j2ee webòq›_°ç›´æŽ¥ä½¿ç”¨å·®ä¸å¤šå°±æ²¡ä»€ä¹ˆé—®é¢?关键我们中间件是使用的内部协è®?而不是http,学习acegi-securityå?感觉它主要实现都是靠着filter来的,¾l“æžœž®Þp‡ªå·²å†™äº†ä¸€ä¸ªæ‹¦æˆªå™¨å–代filter,然后使用自带çš?or springside的方法安全拦截器),安全控制½Ž—是整合上去äº?后来发现现有的程序只有一个方法处ç?òq¶è¦ä»Žè¯·æ±‚的数据中取得条件来判断是否有权利调用后台的业务模块,说明白点ž®±æœ‰ç‚¹ç±»ä¼¼åœ¨http下的URL路径åQŒè™½ç„¶acegi-security提供了方法的拦截åQŒä½†å¥½åƒä¸èƒ½æ‹¦æˆªæ–ÒŽ³•的参敎ͼŒå¦‚果有的话我ž®±å¯ä»¥é€šè¿‡å‚数来判断是否有权限操作了,or把原来的½E‹åºæ”ÒŽˆä¸€ä¸ªä¸€ä¸ªçš„æ–ÒŽ³•åQˆçº¯å±žè¯´½W‘,呵呵åQ‰ï¼Œ˜q™æ ·é—®é¢˜ž®±å¾ˆæ˜Žæ˜¾äº†ï¼Œacegi-securityòq¶æ²¡æœ‰æä¾›æˆ‘们协议的安全拦截器(http中是FilterSecurityInterceptoråQ‰ï¼Œæ‰€ä»¥ä¸€åˆ‡éƒ½å¾—自已实玎ͼŒä»Žorg.acegisecurity.intercept包下的基¾cÕd’ŒæŽ¥å£å¼€å§‹ï¼Œå‚照它FilterSecurityInterceptorå’ŒMethodSecurityInterceptor照葫芦画瓢,我们自已的安全拦截器ž®±å‡ºæ¥äº†,目前¾pȝ»Ÿå·²å®Œå…¨æ•´æˆacegi,æˆäØ“RBAC的权限控制管ç?img height="19" src="http://www.aygfsteel.com/Emoticons/coffee.gif" width="19" border="0" />。ACL的权限控制还没有仔细研究åQŒacegi-security架构也还是有些模¾pŠï¼Œæ­¤æ–‡æœ‰å¾…补充...



]]>
Selenium使用入门 http://www.aygfsteel.com/huj/archive/2006/09/16/70003.htmlThe OneThe OneSat, 16 Sep 2006 01:40:00 GMThttp://www.aygfsteel.com/huj/archive/2006/09/16/70003.htmlhttp://www.aygfsteel.com/huj/comments/70003.htmlhttp://www.aygfsteel.com/huj/archive/2006/09/16/70003.html#Feedback6http://www.aygfsteel.com/huj/comments/commentRss/70003.htmlhttp://www.aygfsteel.com/huj/services/trackbacks/70003.html
      Seleniumæ˜¯é›†æˆæµ‹è¯•å·¥å…øP¼Œæ˜¯ThoughtWorks公司(ž®±æ˜¯é©¬åŒå­¦çš„那个公司åQŒç‰›çš„很)çš„å¼€æºå·¥å…øP¼Œæœ€˜q‘在¾|‘上看到介绍的文章,自已也用了一下,它主要包括:Selenium IDEåQŒSelenium Remote Control,Selenium CoreåQŒä¸»è¦çš„æ€æƒ³æˆ‘个理解ž®±æ˜¯åœ¨ä‹É用中生成‹¹‹è¯•报告åQŒæµ‹è¯•用例,以前对这¿Ué›†æˆæµ‹è¯•也不是很了解,也不知说的对不对,一般对开发,‹¹‹è¯•人员来说通过Selenium IDE来生成测试用例中的代码,然后再运junit来进行测试,它的‹¹‹è¯•ç”¨ä¾‹ä¸€èˆ¬äØ“

package  com.thoughtworks.selenium;

import  junit.framework.TestCase;

import  org.openqa.selenium.server.SeleniumServer;

public   class  GoogleTest  extends  TestCase
{
   
private  Selenium selenium;

   
public   void  setUp()  throws  Exception  {
        String url 
=   " http://www.google.com " ;
       selenium 
=   new  DefaultSelenium( " localhost " , SeleniumServer.DEFAULT_PORT,  " *firefox " , url);
       selenium.start();
    }

   
   
protected   void  tearDown()  throws  Exception  {
       selenium.stop();
   }

   
   
public   void  testGoogleTestSearch()  throws  Throwable  {
        selenium.open(
" http://www.google.com " );
        assertEquals(
" Google " , selenium.getTitle());
        selenium.type(
" q " ,  " Selenium OpenQA " );
        assertEquals(
" Selenium OpenQA " , selenium.getValue( " q " ));
        selenium.click(
" btnG " );
        selenium.waitForPageToLoad(
" 5000 " );
        assertTrue(selenium.isTextPresent(
" openqa.org " ));
        assertEquals(
" Selenium OpenQA - Google 搜烦 " , selenium.getTitle());
    }

    
}

 可以从setUp()中看刎ͼŒå®ƒéœ€è¦ç”¨åˆîC¸€ä¸ªå«SeleniumServer的服务器åQŒè¿™ä¸ªæœåŠ¡å™¨çš„ä½œç”¨ä¸»è¦æ˜¯ä»£ç†çš„ä½œç”¨ï¼Œå› äØ“same origin policy(ž®±æ˜¯ä¸€ä¸ªè„šæœ¬åªèƒ½åœ¨å®ƒè‡ªå·²çš„æºç«™ç‚¹ä¸Š˜qè¡ŒåQŒæˆ‘˜q™æ ·ç†è§£çš„,不了的可以查看官æ–ÒŽ–‡æ¡?的关¾p»ï¼Œæ‰€ä»¥éœ€è¦åŠ ä¸€å±‚åŽ»å–å¾—¾|‘页òq¶èƒ½åœ¨ä¸Šé¢è¿è¡Œæµ‹è¯•脚本的服务器,也就是我们的SeleniumServer了,所以才叫Selenium Remote ControlåQŒæˆ‘们的‹¹‹è¯•用例主要是去˜qžå®ƒåQŒè€Œä¸æ˜¯çœŸæ­£ç›´æŽ¥åŽ»˜qžæŽ¥google˜q›è¡Œçš„æµ‹è¯•。以后不用想怎么写测试用例了åQŒSelenium Core主要是写html来进行测试,不过同样也可以用Selenium IDE来自动生成htmlåQŒç„¶åŽå°†ç”Ÿæˆçš„一个html攑ֈ°ä¸€èµøP¼Œå¼€å¯TestRunner.html˜q›è¡Œè‡ªåЍ‹¹‹è¯•åQŒé€Ÿåº¦åˆ†ä¸‰æ­¥ï¼Œrun,walk,step,run模式下看上去˜q˜æ˜¯å¾ˆè¿‡ç˜„¡š„åQŒåŽŸæ¥javascript可以写出˜q™ä¹ˆç‰›çš„软äšgåQŒå‘µå‘µï¼Œjava6也支持javascript脚本了,看来˜q™é—¨è¯­è¨€˜q˜æ˜¯å€¼å¾—好好研究一下,不能æ€ÀL˜¯åœç•™åœ¨çœ‹å¾—懂的水òqŸë€?br />注意åQšä¸Šé¢è¯´çš„æœåС噍åœ?\selenium-remote-control-0.8.1\server下面
启动命ä×oä¸?java -jar selenium-server.jar
参数 -interactive ä¸ÞZ‹É用交互模式,ž®±æ˜¯å¯ä»¥ç›´æŽ¥åœ¨å‘½ä»¤è¡Œ˜q›è¡Œ‹¹‹è¯•
          -multiWindow 为多½H—体åQŒæˆ‘试了下,不过好像不行



]]>
关于cas单点登陆的一ç‚ÒŽ€È»“ http://www.aygfsteel.com/huj/archive/2006/09/16/70002.htmlThe OneThe OneSat, 16 Sep 2006 01:39:00 GMThttp://www.aygfsteel.com/huj/archive/2006/09/16/70002.htmlhttp://www.aygfsteel.com/huj/comments/70002.htmlhttp://www.aygfsteel.com/huj/archive/2006/09/16/70002.html#Feedback0http://www.aygfsteel.com/huj/comments/commentRss/70002.htmlhttp://www.aygfsteel.com/huj/services/trackbacks/70002.html
æ€È»“主要来源于网上的一些文章和论坛的记录以及我自已的一些想æ³?
CAS (Central Authentication Service) �Yale 大学�ITS 开发的一�JAVA 实现的开�

çš?SSO(single sign-on) 的服åŠ?主要æ˜?.0åQŒåˆ°3.0为ja-sig)ã€?

关键�

TGC(ticket-granting cookie)--------- 受权的票据证�

KDC( Key Distribution Center ) ---------- 密钥发放中心

Service ticket(ST) --------- 服务¼œ¨æ®åQ?ç”?KDC çš?TGS 发放ã€?ä»ÖM½•一å?Workstation 都需要拥有一张有效的 Service Ticket 才能讉K—®åŸŸå†…部的应用 (Applications) ã€?如果能正¼‹®æŽ¥æ”?Service Ticket åQŒè¯´æ˜Žåœ¨ CASClient-CASServer 之间的信ä»Õd…³¾pÕd·²¾lè¢«æ­£ç¡®å»ºç«‹èµäh¥ , 通常ä¸ÞZ¸€å¼ æ•°å­—加密的证书

Ticket Granting tieckt(TGT) --------- ¼œ¨æ®æŽˆæƒ¼œ¨æ®åQŒç”± KDC çš?AS 发放。即获取˜q™æ ·ä¸€å¼ ç¥¨æ®åŽåQŒä»¥åŽç”³è¯·å„¿Uå…¶ä»–服务票æ?(ST) 便不必再å?KDC 提交íw«ä†¾è®¤è¯ä¿¡æ¯ ( 准确术语æ˜?Credentials) ã€?

authentication service (AS) --------- 认证用服务,索取 Crendential åQŒå‘æ”?TGT

ticket-granting service (TGS) --------- ¼œ¨æ®æŽˆæƒæœåŠ¡åQŒçƒ¦å?TGT åQŒå‘æ”?ST

CAS 单点服务器的认证˜q‡ç¨‹åQŒæ‰€æœ‰åº”用服务器收到应用è¯äh±‚后,‹‚€æŸ?ST å’?TGT åQŒå¦‚果没有或不对åQŒè{åˆ?CAS 认证服务器登陆页面,通过安全认证后得åˆ?ST å’?TGT 再重定向到相兛_º”用服务器åQŒåœ¨ä¼šè¯ç”Ÿå‘½å‘¨æœŸä¹‹å†…如果再定向到别的应用åQŒå°†å‡ºç¤º

ST å’?TGT ˜q›è¡Œè®¤è¯ , 注意 , 取得 TGT 的过½E‹æ˜¯é€šè¿‡ SSL 安全协议çš?( 换句话说ž®±æ˜¯å¦‚果不用 ssl 协议 , 每访问一个应用服务,ž®±å¾—重新到认证服务中心认证一‹Æ?) åQŒå…³äº?SSL 的相å…Ïx˜q°å¯ä»¥æŸ¥çœ‹é™„å½?.

白话描述 :

单点登陆 , 无非ž®±æ˜¯æä¾›¾l™ç”¨æˆ·ä¸€‹Æ¡ç™»é™?, 多个¾pȝ»Ÿå…׃ín用户信息的操ä½?.

˜q™ä¸ªæ˜¯æ€Žä¹ˆæ“ä½œçš„å‘¢ ? 有简单的æ–ÒŽ³• , 当用戯‚®¿é—®å…¶ä»–ç³»¾lŸçš„æ—¶å€?, 写个 URL 带上用户çš?ID å’?PASS 提交到相应的¾pȝ»Ÿž®±å¯ä»¥äº† . ˜q™ä¹Ÿæ˜¯ä¸€¿Uæ–¹æ³?

é‚?CAS 是怎么操作的呢 ? 或则æ˜?KRB(Kerberos 是一个加密认证协议,允许¾|‘络用户不ä‹É用明文密码访问服务,一个普é€?
的协议实现包�LOGIN 服务存在伪造欺骗对 Key Distribution Center 的响��

) 怎么操作的呢 ?

ä»–åÆˆä¸æ˜¯å¾ˆå¤æ?, 他先是徏立一ä¸?专门认证用户çš?服务 (SERVER) ˜q™ä¸ªæœåŠ¡åªåšä¸€ä»¶äº‹ , 负责验证用户çš?ID å’?PASS 是否是正¼‹?, 在正¼‹®çš„æƒ…况提供用户一个名ä¸?TGT 的票æ?,

相当你要åŽÀL¸¸ä¹åœºçŽ?, 首先你要在门口检查你的èínä»?( å?CHECK ä½ çš„ ID å’?PASS), 如果你通过验证 , æ¸æ€¹åœºçš„门卫 (AS) åÏxä¾›ç»™ä½ ä¸€å¼ é—¨å?(TGT).

˜q™å¼ å¡ç‰‡çš„用处就是告è¯?æ¸æ€¹åœºçš„各个场所 , 你是通过正门˜q›æ¥ , 而不是后门偷爬进来的 , òq¶ä¸”也是获取˜q›å…¥åœºæ‰€ä¸€æŠŠé’¥åŒ?.

好的 , 现在你有张卡 , 但是˜q™å¯¹ä½ æ¥ä¸é‡è¦?, å› äØ“ä½ æ¥æ¸æ€¹åœÞZ¸æ˜¯äؓ了拿˜q™å¼ å¡çš„ , 好的 , 我们向你的目的出å?, æ?, 你来åˆîC¸€ä¸ªæ‘©å¤©æ¥¼ , 你想˜q›å…¥çŽ©çŽ© ,

˜q™æ—¶æ‘©å¤©è½®çš„æœåŠ¡å‘?(client) 拦下ä½?, 向你要求摩天轮的 (ST) ¼œ¨æ® , 你说你只有一个门å?(TGT), 好的 , 那你只要æŠ?TGT 攑֜¨ä¸€æ—çš„¼œ¨æ®æŽˆæƒæœ?(TGS) 上刷一ä¸?,

¼œ¨æ®æŽˆæƒæœ?(TGS) ž®±æ ¹æ®ä½ çŽ°åœ¨æ‰€åœ¨çš„æ‘©å¤©è½?, ¾l™ä½ ä¸€å¼ æ‘©å¤©è½®çš„票æ?(ST), å“?, 你有摩天轮的¼œ¨æ® , 现在你可以畅通无é˜Èš„˜q›å…¥æ‘©å¤©è½®é‡Œæ¸¸çŽ©äº?.

当然如果你玩完摩天轮å?, 惛_Ž»æ¸æ€¹å›­çš„咖啡厅休息下 , 那你一样只要带着那张门卡 (TGT). 到相应的咖啡厅的¼œ¨æ®æŽˆæƒæœ?(TGS) 刷一ä¸?, 得到咖啡厅的¼œ¨æ® (ST) ž®±å¯ä»¥è¿›å…¥å’–啡厅

当你¼›Õd¼€æ¸æ€¹åœºåŽ , 想用˜q™å¼  TGT åŽÕdˆ·æ‰“的回家的费ç”?, 呵呵 , 对不èµ?, ä½ çš„ TGT 已经˜q‡æœŸäº?, 在你¼›Õd¼€æ¸æ€¹åœºé‚£åˆÕd¼€å§?, ä½ çš„ TGT ž®±å·²¾lé”€æ¯äº† ~

Yale CAS Server 的配¾|®è¿‡½E?

CAS (Central Authentication Service) �Yale 大学�ITS 开发的一�JAVA 实现的开�

çš?SSO(single sign-on) 的服务。该服务是以一ä¸?java web app(eg:cas.war) 来进行服务的åQ?

使用旉™œ€è¦å°† cas.war 发布åˆîC¸€ä¸?servlet2.3 兼容的服务器上,òq¶ä¸”服务器需要支æŒ?SSL åQ?

在需要ä‹É用该服务的其他服务器åQˆå®¢æˆøP¼‰åQŒåªè¦è¿›è¡Œç®€å•的配置ž®±å¯ä»¥å®žçŽ?SSO 了ã€?

CAS 的客æˆïL«¯å¯ä»¥æœ‰å¾ˆå¤šç§åQŒå› ä¸ºéªŒè¯çš„¾l“果是以 XML 的格式返回的åQ?CAS 的客æˆïL«¯å·?

打包˜q›åŽ»çš„æœ‰ java,perl,python,asp,apache module ½{‰å¥½å‡ ç§å®¢æˆ·ç«¯ç¤ºä¾‹ï¼Œä½ è¿˜å¯ä»¥æ ÒŽ®

需要实çŽîC¸€ä¸ªè‡ªå·Þqš„客户端,非常½Ž€å?!~

下面我们ä»?tomcat 5.0 ä½œäØ“ CAS Server(server1) åQŒå¦å¤–一å?tomcat5.0 ä¸?client(client1)

ä¸ÞZ¾‹˜q›è¡Œè¯´æ˜Žã€?

1. 下蝲 cas-server å’?cas-client( å¯é€‰ï¼Œå»ø™®®ä½¿ç”¨åQ?

http://www.ja-sig.org/downloads/cas/cas-server-3.0.5.zip

http://www.ja-sig.org/downloads/cas-clients/cas-client-java-2.1.1.zip

2. ž®?cas-server-3.0.5.zip 解压åQŒåƈž®?lib/cas.war 拯‚´åˆ?server1 çš?webapps ä¸?

3. 产生 SERVER 的证�

PS: 参数与各¾pȝ»Ÿæœ¬èín一è‡?

%JAVA_HOME%\bin\keytool -delete -alias tomcat -keypass changeit

%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keypass changeit -keyalg RSA

%JAVA_HOME%\bin\keytool -export -alias tomcat -keypass changeit  -file %FILE_NAME%

%JAVA_HOME%\bin\keytool -import -file server.crt -keypass changeit -keystore %JAVA_HOME%/jre/lib/security/cacerts

%JAVA_HOME%\bin\keytool -import -file server.crt -keystore %JAVA_HOME%\jre\lib\security\cacerts

4. �server1 配置 tomcat 使用 HTTPS

$CATALINA_HOME/conf/server.xml �

<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"

port="8443" minProcessors="5" maxProcessors="75"

enableLookups="true" disableUploadTimeout="true"

acceptCount="100" debug="0" scheme="https"

secure="true">

<Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory"

keystoreFile="/path/to/your/keystore-file"

keystorePass="your-password" clientAuth="false" protocol="TLS" />

</Connector>

5. 在要使用 CAS 的客æˆïL«¯ client1 里设¾|®ï¼ˆä»?servlets-examples ˜q™ä¸ª APP ä¸ÞZ¾‹åQ‰ï¼Œæˆ‘们使用

ServletFilter(CAS client 里提供的 ) 来实�SSO 的检查�

修改 servlets-examples/WEB-INF/web.xml

<filter>

<filter-name>CASFilter</filter-name>

<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>

<init-param>

<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>

<param-value>https://your.cas.server.name(eg:server1):port/cas/login</param-value>

</init-param>

<init-param>

<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>

<param-value>https://your.cas.server.name(eg:server1):port/cas/proxyValidate</param-value>

</init-param>

<init-param>

<param-name>edu.yale.its.tp.cas.client.filter.serviceUrl</param-name>

<param-value>your.client.server.ip(eg:127.0.0.1):port</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CASFilter</filter-name>

<url-pattern>/servlet/*</url-pattern>

</filter-mapping>

PS: åœ?client 端配¾|?filter æ—?, 需要将 CAS çš?filter 攑֜¨ web.xml 最上端 ,. 如果在你çš?web.xml 有类ä¼?encodingFilter çš?filter 也需要将˜q™ä¸ª filter 攑֜¨ CAS filter 下面 , 否则你会发现每次讉K—®æ—‰™ƒ½éœ€è¦ä½ ˜q›è¡ŒéªŒè¯ .

6. ž®?cas-client-java-2.1.1.zip 解压åQŒæŠŠ java/lib/casclient.jar 拯‚´åˆ?client1 服务器上çš?

webapps/servlets-examples/WEB-INF/lib 目录下(如果没有ž®±å¾ä¸€ä¸ªï¼‰

7. 导出 SERVER 的证书,用来¾l™æ‰€æœ‰éœ€è¦ç”¨åˆ°çš„客户端导å…?

keytool -export -file server.crt -alias my-alias-name -keystore keystore-file

8. 在客æˆïL«¯çš?JVM 里导入信ä»Èš„ SERVER 的证ä¹?( æ ÒŽ®æƒ…况有可能需要管理员权限 )

keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file server.crt -alias my-alias-name

9.test & done.

æŠ?server1 å’?client1 分别èµäh¥åQŒæ£€æŸ¥å¯åŠ¨çš„ LOG 是否正常åQŒå¦‚果一åˆ?OK åQŒå°±è®‰K—®

http://client1:8080/servlets-examples/servlet/HelloWorldExample

¾pȝ»Ÿä¼šè‡ªåŠ¨èŸ©è½¬åˆ°ä¸€ä¸ªéªŒè¯é¡µé¢ï¼Œéšä¾¿è¾“å…¥ä¸€ä¸ªç›¸åŒçš„è´¦å· , 密码åQŒä¸¥æ­£é€šè¿‡ä¹‹åŽž®×ƒ¼šè®‰K—®

到真正的 HelloWorldExample ˜q™ä¸ª servlet äº?

实现自已的认证代ç ?(java 代码和相å…Ïx³¨é‡?, 需è¦?cas-server-3.0.5.jar åŒ?)

 

package  com.mcm.sso; 

 

import  org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler; 

import  org.jasig.cas.authentication.principal.UsernamePasswordCredentials; 

import  org.springframework.util.StringUtils; 

 

public   class  MyUsernamePasswordAuthenticationHandler  extends  

              AbstractUsernamePasswordAuthenticationHandler 
{ 

 

       
public   boolean  authenticateUsernamePasswordInternal( 

                     
final  UsernamePasswordCredentials credentials)  { 

              
final  String username  =  credentials.getUsername(); 

              
final  String password  =  credentials.getPassword(); 

              

              
//  此处实现你的登陆验证代码 

              
if  (StringUtils.hasText(username)  &&  StringUtils.hasText(password) )  { 

                     getLog().debug( 

                                   
" User [ "   +  username  +   " ] was successfully authenticated with ucix. " ); 

                     
return   true ; 

              }
 

 

              getLog().debug(
" User [ "   +  username  +   " ] failed authentication " ); 

 

              
return   false ; 

       }
 

 

       
protected   void  afterPropertiesSetInternal()  throws  Exception  { 

              
super .afterPropertiesSetInternal(); 

       }
 

}
 

 

然后ž®†è¿™ä¸ªç±»é…ç½®åˆ?deployerConfigContext.xml æ–‡äšgé‡?, 替代 <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

可能要用到数据库˜qžæŽ¥ä¹‹ç±»çš„配¾|®ï¼Œå…·ä½“可参ç…?spring framework 相关文档

åœ?client 端取到登陆相关信息及ç™Õd‡º¾pȝ»Ÿ

1. 取得用用�ID

以下两种方式都可�

session.getAttribute(CASFilter.CAS_FILTER_USER);

session.getAttribute("edu.yale.its.tp.cas.client.filter.user");

也可以直接取得认�java 对象

session.getAttribute(CASFilter.CAS_FILTER_RECEIPT);

session.getAttribute("edu.yale.its.tp.cas.client.filter.receipt");

JSP2.0 标准写法

<c:out value="${sessionScope['edu.yale.its.tp.cas.client.filter.user']}"/>

åœ?jsp 中ä‹Éç”?CAS Tag Library 标签

除实çŽîC»¥ä¸ŠåŠŸèƒ½å®Œ˜q˜å¯ä»¥å®žçŽ°ç™»å‡ÞZ¹‹¾cȝš„相关功能åQŒå…·ä½“参ç…?cas 官方文档

http://www.ja-sig.org/products/cas/client/jsp/index.html

附录

1 åQ?SSL(Server Socket Layer) ½Ž€ä»?

在网¾lœä¸Šä¿¡æ¯åœ¨æº - 宿的传递过½E‹ä¸­ä¼šç»˜q‡å…¶å®ƒçš„计算机。一般情况下åQŒä¸­é—´çš„计算æœÞZ¸ä¼šç›‘听èµ\˜q‡çš„信息。但在ä‹É用网上银行或者进行信用卡交易的时候有可能被监视,从而导致个人隐¿Uçš„æ³„露。由äº?Internet å’?Intranet 体系¾l“构的原因,æ€ÀLœ‰æŸäº›äºø™ƒ½å¤Ÿè¯»å–åÆˆæ›¿æ¢ç”¨æˆ·å‘å‡ºçš„ä¿¡æ¯ã€‚éšç€¾|‘上支付的不断发展,äºÞZ»¬å¯¹ä¿¡æ¯å®‰å…¨çš„要求­‘Šæ¥­‘Šé«˜ã€‚å› æ­?Netscape 公司提出äº?SSL 协议åQŒæ—¨åœ¨è¾¾åˆ°åœ¨å¼€æ”„¡½‘¾l?(Internet) 上安全保密地传输信息的目的,˜q™ç§åè®®åœ?WEB 上获得了òq¿æ³›çš„应用ã€?之后 IETF(ietf.org) å¯?SSL 作了标准化,å?RFC2246 åQŒåƈž®†å…¶¿UîCØ“ TLS åQ?Transport Layer Security åQ‰ï¼Œä»ŽæŠ€æœ¯ä¸Šè®ÔŒ¼Œ TLS1.0 ä¸?SSL3.0 的差别非常微ž®ã€?

2 åQ?SSL 工作原理

SSL 协议使用不对¿U°åŠ å¯†æŠ€æœ¯å®žçŽîC¼šè¯åŒæ–¹ä¹‹é—´ä¿¡æ¯çš„安全传递。可以实çŽîC¿¡æ¯ä¼ é€’的保密性、完整性,òq¶ä¸”会话双方能鉴别对方èín份。不同于常用çš?http 协议åQŒæˆ‘们在与网站徏ç«?SSL 安全˜qžæŽ¥æ—¶ä‹Éç”?https 协议åQŒå³é‡‡ç”¨ https://ip:port/ 的方式来讉K—®ã€‚当我们与一个网站徏ç«?https ˜qžæŽ¥æ—Óž¼Œæˆ‘们的浏览器ä¸?Web Server 之间要经˜q‡ä¸€ä¸ªæ¡æ‰‹çš„˜q‡ç¨‹æ¥å®Œæˆèín份鉴定与密钥交换åQŒä»Žè€Œå¾ç«‹å®‰å…¨è¿žæŽ¥ã€‚具体过½E‹å¦‚下:

用户‹¹è§ˆå™¨å°†å…?SSL 版本受÷€åŠ å¯†è®¾¾|®å‚数、与 session 有关的数据以及其它一些必要信息发送到服务器ã€?

服务器将å…?SSL 版本受÷€åŠ å¯†è®¾¾|®å‚数、与 session 有关的数据以及其它一些必要信息发送给‹¹è§ˆå™¨ï¼ŒåŒæ—¶å‘ç»™‹¹è§ˆå™¨çš„˜q˜æœ‰æœåŠ¡å™¨çš„è¯ä¹¦ã€‚å¦‚æžœé…¾|®æœåС噍çš?SSL 需要验证用戯‚ín份,˜q˜è¦å‘出è¯äh±‚要求‹¹è§ˆå™¨æä¾›ç”¨æˆ¯‚¯ä¹¦ã€?

客户端检查服务器证书åQŒå¦‚果检查失败,提示不能建立 SSL ˜qžæŽ¥ã€‚如果成功,那么¾l§ç®‹ã€‚客æˆïL«¯‹¹è§ˆå™¨äؓ本次会话生成 pre-master secret åQŒåƈž®†å…¶ç”¨æœåŠ¡å™¨å…¬é’¥åŠ å¯†åŽå‘é€ç»™æœåŠ¡å™¨ã€‚å¦‚æžœæœåŠ¡å™¨è¦æ±‚é‰´åˆ«å®¢æˆ·íw«ä†¾åQŒå®¢æˆïL«¯˜q˜è¦å†å¯¹å¦å¤–一些数据签名后òq¶å°†å…¶ä¸Žå®¢æˆ·ç«¯è¯ä¹¦ä¸€èµ·å‘送给服务器ã€?

如果服务器要求鉴别客戯‚ín份,则检查签¾|²å®¢æˆ¯‚¯ä¹¦çš„ CA 是否可信。如果不在信ä»Õdˆ—表中åQŒç»“束本‹Æ¡ä¼šè¯ã€‚如果检查通过åQŒæœåŠ¡å™¨ç”¨è‡ªå·Þqš„¿Ué’¥è§£å¯†æ”¶åˆ°çš?pre-master secret åQŒåƈ用它通过某些½Ž—法生成本次会话çš?master secret ã€?

客户端与服务器均使用æ­?master secret 生成本次会话的会话密é’?( 对称密钥 ) 。在双方 SSL 握手¾l“束后传递ä“Q何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运½Ž—量低一个数量çñ”以上åQŒèƒ½å¤Ÿæ˜¾è‘—提高双方会话时的运½Ž—速度ã€?

客户端通知服务器此后发送的消息都ä‹Éç”¨è¿™ä¸ªä¼šè¯å¯†é’¥è¿›è¡ŒåŠ å¯†ã€‚åÆˆé€šçŸ¥æœåŠ¡å™¨å®¢æˆïL«¯å·²ç»å®Œæˆæœ¬æ¬¡ SSL 握手ã€?

服务器通知客户端此后发送的消息都ä‹Éç”¨è¿™ä¸ªä¼šè¯å¯†é’¥è¿›è¡ŒåŠ å¯†ã€‚åÆˆé€šçŸ¥å®¢æˆ·ç«¯æœåŠ¡å™¨å·²ç»å®Œæˆæœ¬æ¬¡ SSL 握手ã€?

本次握手˜q‡ç¨‹¾l“束åQŒä¼šè¯å·²¾lå¾ç«‹ã€‚双方ä‹É用同一个会话密钥分别对发送以及接受的信息˜q›è¡ŒåŠ ã€è§£å¯†ã€?

 



]]>
关于groovy的一些用�http://www.aygfsteel.com/huj/archive/2006/09/16/70001.htmlThe OneThe OneSat, 16 Sep 2006 01:38:00 GMThttp://www.aygfsteel.com/huj/archive/2006/09/16/70001.htmlhttp://www.aygfsteel.com/huj/comments/70001.htmlhttp://www.aygfsteel.com/huj/archive/2006/09/16/70001.html#Feedback0http://www.aygfsteel.com/huj/comments/commentRss/70001.htmlhttp://www.aygfsteel.com/huj/services/trackbacks/70001.html
最˜q‘ä‹É用groovy写了一个程序生成器,å› äØ“å…¬å¸åŽŸæ¥çš„ç”Ÿæˆç¨‹åºå¤ªåŽŸå§‹äº?直接是JSP调我们自已的业务中间件的,新生成后的程序采用了spring的框æž?用到的技术主要是groovy+Template,写的˜q‡ç¨‹ä¸­ä¹Ÿ¼„°åˆ°äº†ä¸€äº›é—®é¢?解决后希望与大家å…׃ín.具体关于如何使用groovy以及用groovy˜q›è¡Œæ¨¡æ¿¾~–程åQŒè¯·æŸ¥çœ‹åQ©ïð‡åQ­ä¸Šçš„实战groovy¾pÕdˆ—的文章.
1.在模板文件中是不能ä‹É用闭包的,ä½¿ç”¨åŽå¯èƒ½ä¼šé€ æˆåˆ†æžå™¨çš„æ··äØ•.
2.正则表达式用法之大小�
一般我们ä‹É用javaæ—‰™ƒ½˜q™ä¹ˆå†?br />

Pattern pattern  =  Pattern.compile(
            
" Y\\s*E\\s*C\\s*X\\s* " , Pattern.CASE_INSENSITIVE);

以第二参数来指明不区分大ž®å†™,在ä‹É用groovy我发çŽ?˜q™æ‹›ä¸çµäº†ï¼Œå› äؓ在groovy中正则表辑ּæ˜¯åœ¨è¯­è¨€ä¸­çš„
def pattern = ~/(?i)(.*)/˜q™æ ·ž®±å¾—åˆîCº†ä¸€ä¸ªpatternåQŒå¦‚果要指定不区分大ž®å†™åQŒä¸Žperl,ruby语言有些不同åQŒæŸ¥jdk官方æ–ÒŽ¡£å¾—知,如上代码åŠ??i)ž®±ï¼¯åQ«äº†åQ?br />注意åQšåœ¨groovy中可以这样写

def  matcher =   " string "   =~  pattern

此时的patternä¸ÞZ¸²åQŒè€Œä¸èƒ½æ˜¯æ­£åˆ™è¡¨è¾¾å¼?
3.java中的匿名¾cÖM¸Žgroovy中的闭包
生成½E‹åºéš‘Ö…è¦ç¢°åˆîC¸Žç›®å½•相关的操作程序,一般在java中文件过滤都˜q™ä¹ˆå†?br />

String regex  =   " .*查询.*\\.ini " ;
        
final  Pattern pattern2  =  Pattern.compile(regex,Pattern.CASE_INSENSITIVE);    
        
        File path 
=   new  File( " C:\\mydir " );
        String[] list 
=  path.list( new  FilenameFilter()  {
            
public   boolean  accept(File dir, String name)  {
                
return  pattern2.matcher( new  File(name).getName()).matches();
            }

        }
 );

查遍所有groovy文档发现òq¶æ²¡æœ‰ç›´æŽ¥ä‹É用闭包来完成以上½E‹åºåQŒåœ¨groovy中用闭包代替内部¾cȝš„只能用在swing¾cÖM¸­é‚£äº›listener的接口,具体¾l†èŠ‚æŸ¥çœ‹å®˜æ–¹æ–‡æ¡£åQ?a >http://groovy.codehaus.org/Groovy+Beans
要用groovy来完成上面的½E‹åºæœ‰ä¸¤¿Uæ–¹æ³•,½W¬ä¸€ž®±æ˜¯ç”¨java完成后,提供¾l™groovy来调用,½W¬äºŒä¸‹ç›´æŽ¥ç”¨groovy实现åQŒå…¶å®žå¾ˆ½Ž€å•,代码如下åQ?br />

def  filter( def  filelist){
         
def  col = []
        filelist.each{
            
if (it =~ " .*\\.ini " )
                col
<< it
        }
        
return  col
    }

def  filterfile( def  filedir, def  fileName){
        
def  ffile  =  new File(filedir,fileName)
                
def  fileNames  =  filter(ffile.list())
        
if (( fileName  =~ ' \\d{3} ' ).matches())
            fileName 
=   " I${fileName} "
        createSrc(fileNames,ffile,fileName)
    }

主要ç”׃¸¤ä¸ªå‡½æ•°å®Œæˆï¼Œ½W¬ä¸€ä¸ªè¿‡æ»¤ï¼Œ½W¬äºŒä¸ªåŒ¹é…?



]]>
Groovy入门http://www.aygfsteel.com/huj/archive/2006/09/16/69999.htmlThe OneThe OneSat, 16 Sep 2006 01:37:00 GMThttp://www.aygfsteel.com/huj/archive/2006/09/16/69999.htmlhttp://www.aygfsteel.com/huj/comments/69999.htmlhttp://www.aygfsteel.com/huj/archive/2006/09/16/69999.html#Feedback0http://www.aygfsteel.com/huj/comments/commentRss/69999.htmlhttp://www.aygfsteel.com/huj/services/trackbacks/69999.html
1.到这�a >http://groovy.codehaus.org/download.html下蝲最新版本的groovy.

2.讄¡½®çŽ¯å¢ƒå˜é‡
GROOVY_HOME = C:/groovydir;
ž®?GROOVY_HOME %\bin加入到环境变量pathé‡?br />
3.½Ž€å•ä‹É用方æ³?br />
1)命ä×o行方å¼?br />groovysh
2)ide
swingçš„gui操作界面åQŒæ¯”较简陋。好像有UltraEdit的插ä»?a >http://groovy.codehaus.org/UltraEdit+Plugin
groovyConsole
3)˜qè¡Œgroovysh脚本
groovy SomeScript.groovy



]]>
下次K歌就K˜q™ä¸ª-我的名字叫依èŽ?/title><link>http://www.aygfsteel.com/huj/archive/2006/09/15/69970.html</link><dc:creator>The One</dc:creator><author>The One</author><pubDate>Fri, 15 Sep 2006 13:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/huj/archive/2006/09/15/69970.html</guid><wfw:comment>http://www.aygfsteel.com/huj/comments/69970.html</wfw:comment><comments>http://www.aygfsteel.com/huj/archive/2006/09/15/69970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/huj/comments/commentRss/69970.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/huj/services/trackbacks/69970.html</trackback:ping><description><![CDATA[ <div id="wmqeeuq" class="\"quote\""> <div id="wmqeeuq" class="\"quote-title\"">引用</div> <div id="wmqeeuq" class="\"quote-content\"">依琏åQŒèˆ’麦贝依琏åQŒèˆ’唏嘘娜菲åQŒå¤çŽ›ä¸½ä¾æ–¯åˆ~~¿Uƒå„¿ã€?<br />依琏åQŒshe没说妹笨儿,çˆÞq‚‰è…¹å—啡一åQŒç‹—my life~~¿Uƒå„¿ã€‚ã€?<br />舒服太,土匪~~莱姆ã€?萨普莱姆åQŒåœŸåŒª~~莱姆ã€?<br /><br />依琏åQŒèˆ’麦贝依琏åQŒèˆ’唏嘘娜菲åQŒå¤çŽ›ä¸½æ–¯åˆ~~¿Uƒå„¿ã€?<br />依琏åQŒsee麦美so布林恩。Do have do 不玩。瘦奶寒毒~~¿Uƒå„¿ã€? <br />舒服太,土匪~~莱姆ã€?萨普莱姆åQŒåœŸåŒª~~莱姆ã€?<br /><br />依曼åQŒshe日爱吗服毒,å†ÕdœŸé‡Œshow now。晒狗soon卖弄ã€?<br />白蒜åQŒno model éœÔŒ¼ˆluåQ‰ä¸è¢œã€‚共舒后¿Uƒå¤§åQŒç™½è’œé‚£éžä¹°¿Uƒæ¯ç‹— 老死狗系戴利泡死的ã€?<br /><br />依琏åQŒèˆ’麦贝依琏åQŒèˆ’唏嘘娜菲åQŒå¤çŽ›ä¸½æ–¯åˆ~~¿Uƒå„¿ã€?<br />舒服太,土匪~~莱姆ã€?萨普莱姆åQŒåœŸåŒª~~莱姆ã€?br /><br />依曼åQŒç‹—带来了believe, woo,my home get day 。苏黑里showed it ã€?<br />白蒜åQŒno model éœÔŒ¼ˆluåQ‰ä¸è¢œã€‚共梛_Ž¿Uƒå¤§åQŒç™½è’œé‚£éžä¹°¿Uƒæ¯ç‹— 老死狗系戴利泡死的ã€?<br /><br />依琏åQŒèˆ’麦贝依琏åQŒèˆ’唏嘘娜菲åQŒå¤çŽ›ä¸½æ–¯åˆ~~¿Uƒå„¿ã€?<br />依琏åQŒä¸€ådo没笨。吐分红鲁宾。I 疏忽路~~途ã€?<br /><br />ç‹—æ—¥¿Uƒï¼Œfor he~~莱姆ã€?<br />ç‹—æ—¥¿Uƒï¼Œfor he~~莱姆ã€?<br />ç‹—æ—¥¿Uƒï¼Œfor he~~莱姆ã€?<br />ç‹—æ—¥¿Uƒï¼Œfor he~~莱姆ã€?</div> </div> <br /> <br />呵呵åQŒå¤§å®¶æœ‰ä»€ä¹ˆæ„Ÿè§?br /><br /><br /><div id="wmqeeuq" class="code"><br />曲名åQšæˆ‘çš„åå­—å«ä¾èŽ² 歌手åQšä¾èŽ²å¨œ.依莲<br />Hél؈ne<br />Je m’appelle Hél؈ne<br />Je suis une fille<br />Comme les autres<br />Hél؈ne<br />J’ai mes joies mes peines<br />Elles font ma vie<br />Comme la votre<br />Je voudrais trouver l’amour<br />Simplement trouver l’amour<br />Hél؈ne<br />Je m’appelle Hél؈ne<br />Je suis une fille<br />Comme les autres<br />Hél؈ne<br />Si mes nuits sont pleines<br />De rå^ves de poémes<br />Je n’ai rien d’autre<br />Je voudrais trouver l’amour<br />Simplement trouver l’amour<br />Et må^me<br />Si j’ai ma photo<br />Dans tous les journaux<br />Chaque semaine<br />Personne Ne m’attend le soir<br />Quand je rentre tard<br />Personne ne fait battre mon coeur<br />Lorsque s’eteignent les projecteurs<br />Hél؈ne<br />Je m’appelle Hél؈ne<br />Je suis une fille<br />Comme les autres<br />Je voudrais trouver l’amour<br />Simplement trouver l’amour<br />Et må^me<br />Quand à la tél؈<br />Vous me regardez<br />Sourire et chanter<br />Personne<br />Ne m’attend le soir<br />Quand je rentre tard<br />Personne ne fait battre mon coeur<br />Lorsque s’eteignent les projecteurs<br />Hél؈ne<br />Je m’appelle Hél؈ne<br />Je suis une fille<br />Comme les autres<br />Hél؈ne<br />Et toutes mes peines<br />Trouveront l’oubli<br />Un jour ou l’autre<br />Quand je trouverai l’amour<br />Quand je trouverai l’amour<br />Quand je trouverai l’amour<br />Quand je trouverai l’amour<br /><br />中文 我叫伊莲å¨?br />伊莲å¨?霍莱<br /><br /><br />伊莲å¨?<br />我也有快乐和悲伤 <br />有喜怒哀乐的生活 <br /><br />我只æƒÏx‰¾åˆ°ç®€å•的爱情 <br />属于我的爱情 <br /><br />伊莲å¨?<br />我盼望夜里诗歌和¾ŸŽæ¢¦çš„陪ä¼?<br />那样我会别无所æ±?<br /><br />每星期报¾U怸Šéƒ½ä¼šæœ‰æˆ‘的照ç‰?<br />你却从没留意 <br />只剩下我一颗破¼„Žçš„å¿?<br />和偷åïLš„å“­æ³£ <br /><br />每天在电视里 <br />你都微笑着è½Õd”±æ­Œæ›² <br />我只有更隑֏—的心 <br />和更æ·Þqš„å“­æ³£ <br /><br />我的悲伤¾lˆä¼šåŸ‹è—äºŽè®°å¿†æ·±å¤?<br />只要我找到简单的爱情<br /></div><img src ="http://www.aygfsteel.com/huj/aggbug/69970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/huj/" target="_blank">The One</a> 2006-09-15 21:01 <a href="http://www.aygfsteel.com/huj/archive/2006/09/15/69970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐¾l™æ‰€æœ‰æœ‹å‹çš„一部好ç‰?/title><link>http://www.aygfsteel.com/huj/archive/2006/09/12/69228.html</link><dc:creator>The One</dc:creator><author>The One</author><pubDate>Tue, 12 Sep 2006 12:31:00 GMT</pubDate><guid>http://www.aygfsteel.com/huj/archive/2006/09/12/69228.html</guid><wfw:comment>http://www.aygfsteel.com/huj/comments/69228.html</wfw:comment><comments>http://www.aygfsteel.com/huj/archive/2006/09/12/69228.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.aygfsteel.com/huj/comments/commentRss/69228.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/huj/services/trackbacks/69228.html</trackback:ping><description><![CDATA[      ­‘Šç‹±åˆå‡º½W¬äºŒå­£ï¼Œæ¯å‘¨ä¸€é›†çš„½{‰å¾…真是隄¡†¬å•Šï¼Œæ²¡æƒ³åˆ°è€ç¾Žä¹Ÿè¿™ä¹ˆèƒ½¼‚¨ï¼Œ˜q™ç§æ’­æ”¾å‘¨æœŸä½¿æˆ‘惌™“v了去òq´çœ‹æœ¨æ‘的那部讲方程式赛车手的故事的电视剧集åQŒåå­—忘è®îCº†åQŒæœ‰å…´è¶£è€…到GOOGLE上搜一下,呵呵åQŒç‘ô¾l­è®²­‘Šç‹±åQŒè®°å¾—里面有句让我记忆蛮æ·Þqš„话,如果一个äh的脑子对一件事有太多反映的话,他不是神¾_„¡—…ž®±æ˜¯é«˜IQçš„ähåQŒå‰§é›†ä¸­çš„主人公ž®±æ˜¯˜q™ç±»äººç‰©åQŒå¾½{‘架构师åQŒå’Œæˆ‘们IT¾pȝ»Ÿæž¶æž„师有得拼啊,搞不好他来做IT肯定成超¾U§é»‘客,½W¬äºŒå­£ä¸»è¦æ˜¯è®²è„±ç‹±åŽåœ¨å¤–逃串的事情,今天不知怎么搞的åQŒå‡ºçš„这么慢åQŒå…ˆæžäº†ä¸ªæ²¡å­—幕的看看,唉,ž®±å½“¾lƒä¹ ä¸‹è‹±æ–‡å§ã€?br /><img style="WIDTH: 584px; HEIGHT: 677px" height="1082" src="http://img.verycd.com/posts/0608/post-453615-1156232689.jpg" width="604" /><br /><img src ="http://www.aygfsteel.com/huj/aggbug/69228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/huj/" target="_blank">The One</a> 2006-09-12 20:31 <a href="http://www.aygfsteel.com/huj/archive/2006/09/12/69228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">Èð½ðÊÐ</a>| <a href="http://" target="_blank">ÁéÌ¨ÏØ</a>| <a href="http://" target="_blank">½ÒÑôÊÐ</a>| <a href="http://" target="_blank">ÇàÉñÏØ</a>| <a href="http://" target="_blank">ºéÑÅÏØ</a>| <a href="http://" target="_blank">¸ÄÔòÏØ</a>| <a href="http://" target="_blank">º£ÄþÊÐ</a>| <a href="http://" target="_blank">ÂÐÄÏÏØ</a>| <a href="http://" target="_blank">вÌÏØ</a>| <a href="http://" target="_blank">±±³½Çø</a>| <a href="http://" target="_blank">¼ÎÓãÏØ</a>| <a href="http://" target="_blank">´óÆÒÇø</a>| <a href="http://" target="_blank">ÈÄÑôÏØ</a>| <a href="http://" target="_blank">·î»¯ÊÐ</a>| <a href="http://" target="_blank">ÁÖµéÏØ</a>| <a href="http://" target="_blank">³à·åÊÐ</a>| <a href="http://" target="_blank">ºÍÁúÊÐ</a>| <a href="http://" target="_blank">ÓÀ¸£ÏØ</a>| <a href="http://" target="_blank">ÐËÄþÊÐ</a>| <a href="http://" target="_blank">ÐÂÁúÏØ</a>| <a href="http://" target="_blank">·ï»ËÏØ</a>| <a href="http://" target="_blank">ÂÞÉ½ÏØ</a>| <a href="http://" target="_blank">½ú³Ç</a>| <a href="http://" target="_blank">ÕòÄþ</a>| <a href="http://" target="_blank">ÂÞµéÏØ</a>| <a href="http://" target="_blank">ËçÑôÏØ</a>| <a href="http://" target="_blank">Å̽õÊÐ</a>| <a href="http://" target="_blank">Æ½É½ÏØ</a>| <a href="http://" target="_blank">²ÔÎàÏØ</a>| <a href="http://" target="_blank">°¢°Í¸ÂÆì</a>| <a href="http://" target="_blank">º£³ÇÊÐ</a>| <a href="http://" target="_blank">ÂåÔúÏØ</a>| <a href="http://" target="_blank">¶õÂ×´º×ÔÖÎÆì</a>| <a href="http://" target="_blank">¿Ëʲ¿ËÌÚÆì</a>| <a href="http://" target="_blank">¶ëüɽÊÐ</a>| <a href="http://" target="_blank">¾Å½­ÏØ</a>| <a href="http://" target="_blank">ÏØ¼¶ÊÐ</a>| <a href="http://" target="_blank">äµÔ´ÏØ</a>| <a href="http://" target="_blank">¶õÂ×´º×ÔÖÎÆì</a>| <a href="http://" target="_blank">Ö麣ÊÐ</a>| <a href="http://" target="_blank">¶´¿ÚÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>