??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品无码久久SM,亚洲av无码乱码国产精品,亚洲真人无码永久在线观看http://www.tkk7.com/huj/zh-cnSun, 11 May 2025 22:13:59 GMTSun, 11 May 2025 22:13:59 GMT60Ajax结http://www.tkk7.com/huj/archive/2006/10/31/78275.htmlThe OneThe OneTue, 31 Oct 2006 07:03:00 GMThttp://www.tkk7.com/huj/archive/2006/10/31/78275.htmlhttp://www.tkk7.com/huj/comments/78275.htmlhttp://www.tkk7.com/huj/archive/2006/10/31/78275.html#Feedback0http://www.tkk7.com/huj/comments/commentRss/78275.htmlhttp://www.tkk7.com/huj/services/trackbacks/78275.htmlq个月工作比较忙,再加上读了一?lt;javascript权威指南>,q有....所以没有心上来写blog,q个月最后一天了,赶上来补下作?q个月主要研I了下ajax,其实对于ajax,q初兴v的时候玩q一?也做q一些东?当时的技术也处在异步调用,q回xml,更新|页控gq个阶段,半年q去?Prototype.js,DWR,TrimPath JSTemplate{技术的成熟,使ajax更^民化,使我们更Ҏ在自已的pȝ中?以下ȝ一下这个月学到的东?同时与以前用ajaxq行Ҏ.
高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']();
上面代码表示在对象中使用成员,cM于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.jsq个框架的代码很值得一?里面用到了很多高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为参?cM于ruby的闭包写?br />
var myArray = ['first', 'second', 'third'];
myArray.each( 
function(item, index){
    alert('The item 
in the position #' + index + ' is:' + item);
}
 );


The One 2006-10-31 15:03 发表评论
]]>
eXtremeTable体验http://www.tkk7.com/huj/archive/2006/09/21/71186.htmlThe OneThe OneThu, 21 Sep 2006 12:11:00 GMThttp://www.tkk7.com/huj/archive/2006/09/21/71186.htmlhttp://www.tkk7.com/huj/comments/71186.htmlhttp://www.tkk7.com/huj/archive/2006/09/21/71186.html#Feedback0http://www.tkk7.com/huj/comments/commentRss/71186.htmlhttp://www.tkk7.com/huj/services/trackbacks/71186.html阅读全文

The One 2006-09-21 20:11 发表评论
]]>
一些值得珍藏的搞W短?/title><link>http://www.tkk7.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.tkk7.com/huj/archive/2006/09/19/70486.html</guid><wfw:comment>http://www.tkk7.com/huj/comments/70486.html</wfw:comment><comments>http://www.tkk7.com/huj/archive/2006/09/19/70486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huj/comments/commentRss/70486.html</wfw:commentRss><trackback:ping>http://www.tkk7.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唯大象可靠。不日公牛归来从象处领回夫hQ次日公牛怒斥Q牛B大了Q?</p> <p>  </p> <p>一夫妇带吃奶的孩子去餐厅用,孩子哭闹Q女紧掀,服务生制止,奛_怒:Nq也不行吗?服务生说Q露胸可以但不能自带饮料?</p> <p>  </p> <p>计生办的工作人员C个山村去查工作,发现生很严重,问老乡Q“你们这儿怎么生q么严重呢?”老乡{道Q“没电”。“没电就生呀Q”当官的生气地说。“没甉|事干”。“没事干咋了Q”当官的一脸困惑。“没事干Q就q那事呗。?</p> <p>  </p> <p>那英zM-N看花。毛宁撒?淘声依旧。董文华初夜-血染的风采。陈U捉?常回家看看。彭丽媛大便-在希望的田野上。杨玉莹攑ֱ-轻轻的告诉你?</p> <p>  </p> <p>有两个傻子想开鞋店Q听说鳄鱼的鞋值钱Q他们就L里抓鳄鱼了,q真没少抓,?0多只了。一个傻子说Q“大哥,抓到W?0只鳄鱼它要是再没IK咱就别抓了!Q!?</p> <p>  </p> <p>你拉着一头猪逛街Q很q福的样子,我经q满怀同情的说Q“看一个h的ơ,q他跟谁在一赗”话未说完,q那猪很鄙L弃你而去Q?</p> <p>  </p> <p>一hӞ一x嫁,l媒Zl两人结合,L自我介绍Q一杆枪Q两颗蛋Q?8q没抗战。女的:一扇窗Q两扇门Q?6q没qh。媒人曰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二Zh入沟中?</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>la油的牧畜芽,大姑娘小媛_地里爬,谁要在来L畜,U一地大肌八。稀奇稀奇真E奇,哪有地里U刁的,要是你家的刁丰收了,你要预备多少大闺奟?</p> <p>  </p> <p>和绅考纪晓岚Q出上联Q树上有只鸟Q鸟摇树也摇Q鸟都飞CQ树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>丈夫开灯时不小心把手印留在刚刷qa漆的墙壁上。次日,d叫来Ҏ工:我想让你看看昨晚我丈夫摸q的地方。a漆工晕倒…?</p> <p>  </p> <p>明Q爸爸,古时候,皇帝自称寡hQ那皇后该自UC么?父亲Q傻孩子Q那皇后当然U寡妇啦Q?</p> <p>  </p> <p>护士看到病h在病房喝酒,pq去声叮嘱_“小心肝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遗aQ连长我操你妈!两面都有胶?</p> <p>  </p> <p>那天我看见你了,在超市,你悄悄地把手伸到条码扫描器上Q只见屏q显C猪y?元,你以为机器坏了,把脸凑过ȝQ结果屏q显C猪头肉5元?</p> <p>  </p> <p>十岁男孩鸡鸡,二十岁男孩侦察鸡Q三十岁战斗鸡,四十岁蘪炔RQ五十岁滑翔鸡,六十岁手扶拖拉鸡Q七十岁隐型鸡,八十岁停鸡?</p> <p>  </p> <p>一农妇刚进城当保姆Q给Mh收拾床时发现一用过避孕套,不知是何物,侉K女主人?</p> <p>女主人反问:你们不做爱吗Q农妇回{:做,但没你们q磨狂,都脱皮了?</p> <p>  </p> <p>我昨天才知道Q有一位MM愿意为我失去生命Q呵呵,好感动!Ҏ钉截铁对我说Q你再缠着我,我就L...... </p> <p>  </p> <p>某困山区,因无钱,男h皆用素袋做内裤Q一日某Chl婚Q男除去长裤Q新娘惊叫晕倒,只见内裤正面华ͼ净?5公斤?<br /></p> <img src ="http://www.tkk7.com/huj/aggbug/70486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huj/" target="_blank">The One</a> 2006-09-19 11:54 <a href="http://www.tkk7.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.tkk7.com/huj/archive/2006/09/16/70004.htmlThe OneThe OneSat, 16 Sep 2006 01:41:00 GMThttp://www.tkk7.com/huj/archive/2006/09/16/70004.htmlhttp://www.tkk7.com/huj/comments/70004.htmlhttp://www.tkk7.com/huj/archive/2006/09/16/70004.html#Feedback0http://www.tkk7.com/huj/comments/commentRss/70004.htmlhttp://www.tkk7.com/huj/services/trackbacks/70004.html


对于acegi-security用过spring的朋友一定听说过,早就惛_习一?但一直没有机会用Q加上acegi-security本n很复?v来从打算学到现在差不多都一q多?版本也从0.5升到?.1,正y最q公司的业务处理中间件要提高安全?要做一个权限管理控制的模块,本来如果直接写个拦截器就搞定?不过本着不求最快但求最好的思想,军_用一下大名顶的acegi-security,׃也来玩玩RBACQ基于角色的权限控制Q?参考了一些资?主要来自springside,差不多搞明白了acegi-security是怎么回事,q里不重复别人的文字,主要谈谈我的使用l验,如果是一般的j2ee webq_直接使用差不多就没什么问?关键我们中间件是使用的内部协?而不是http,学习acegi-security?感觉它主要实现都是靠着filter来的,l果p已写了一个拦截器取代filter,然后使用自带?or springside的方法安全拦截器),安全控制是整合上去?后来发现现有的程序只有一个方法处?q要从请求的数据中取得条件来判断是否有权利调用后台的业务模块,说明白点有点类似在http下的URL路径Q虽然acegi-security提供了方法的拦截Q但好像不能拦截Ҏ的参敎ͼ如果有的话我可以通过参数来判断是否有权限操作了,or把原来的E序Ҏ一个一个的ҎQ纯属说W,呵呵Q,q样问题很明显了,acegi-securityq没有提供我们协议的安全拦截器(http中是FilterSecurityInterceptorQ,所以一切都得自已实玎ͼ从org.acegisecurity.intercept包下的基cd接口开始,参照它FilterSecurityInterceptor和MethodSecurityInterceptor照葫芦画瓢,我们自已的安全拦截器出来了,目前pȝ已完全整成acegi,成ؓRBAC的权限控制管?img height="19" src="http://www.tkk7.com/Emoticons/coffee.gif" width="19" border="0" />。ACL的权限控制还没有仔细研究Qacegi-security架构也还是有些模p,此文有待补充...



The One 2006-09-16 09:41 发表评论
]]>
Selenium使用入门 http://www.tkk7.com/huj/archive/2006/09/16/70003.htmlThe OneThe OneSat, 16 Sep 2006 01:40:00 GMThttp://www.tkk7.com/huj/archive/2006/09/16/70003.htmlhttp://www.tkk7.com/huj/comments/70003.htmlhttp://www.tkk7.com/huj/archive/2006/09/16/70003.html#Feedback6http://www.tkk7.com/huj/comments/commentRss/70003.htmlhttp://www.tkk7.com/huj/services/trackbacks/70003.html
      Selenium是集成测试工P是ThoughtWorks公司(是马同学的那个公司Q牛的很)的开源工P最q在|上看到介绍的文章,自已也用了一下,它主要包括:Selenium IDEQSelenium Remote Control,Selenium CoreQ主要的思想我个理解是在用中生成试报告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 ControlQ我们的试用例主要是去q它Q而不是真正直接去q接googleq行的测试。以后不用想怎么写测试用例了QSelenium Core主要是写html来进行测试,不过同样也可以用Selenium IDE来自动生成htmlQ然后将生成的一个html攑ֈ一P开启TestRunner.htmlq行自动试Q速度分三步,run,walk,step,run模式下看上去q是很过瘄Q原来javascript可以写出q么牛的软gQ呵呵,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我试了下,不过好像不行



The One 2006-09-16 09:40 发表评论
]]>
关于cas单点登陆的一Ҏȝ http://www.tkk7.com/huj/archive/2006/09/16/70002.htmlThe OneThe OneSat, 16 Sep 2006 01:39:00 GMThttp://www.tkk7.com/huj/archive/2006/09/16/70002.htmlhttp://www.tkk7.com/huj/comments/70002.htmlhttp://www.tkk7.com/huj/archive/2006/09/16/70002.html#Feedback0http://www.tkk7.com/huj/comments/commentRss/70002.htmlhttp://www.tkk7.com/huj/services/trackbacks/70002.html
ȝ主要来源于网上的一些文章和论坛的记录以及我自已的一些想?
CAS (Central Authentication Service) ?Yale 大学?ITS 开发的一?JAVA 实现的开?

?SSO(single sign-on) 的服?主要?.0Q到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 之间的信dpdl被正确建立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 的相xq可以查看附?.

白话描述 :

单点登陆 , 无非是提供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客PQ只要进行简单的配置可以实?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)

Zq行说明?

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 ZQ,我们使用

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 分别hQ检查启动的 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 端取到登陆相关信息及dpȝ

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可以实现登Zcȝ相关功能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ƈ其UCؓ 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客Lq要再对另外一些数据签名后q将其与客户端证书一起发送给服务器?

如果服务器要求鉴别客戯n份,则检查签|客戯书的 CA 是否可信。如果不在信d表中Q结束本ơ会话。如果检查通过Q服务器用自qU钥解密收到?pre-master secret Qƈ用它通过某些法生成本次会话?master secret ?

客户端与服务器均使用?master secret 生成本次会话的会话密?( 对称密钥 ) 。在双方 SSL 握手l束后传递Q何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运量低一个数量以上Q能够显著提高双方会话时的运速度?

客户端通知服务器此后发送的消息都用这个会话密钥进行加密。ƈ通知服务器客L已经完成本次 SSL 握手?

服务器通知客户端此后发送的消息都用这个会话密钥进行加密。ƈ通知客户端服务器已经完成本次 SSL 握手?

本次握手q程l束Q会话已l徏立。双方用同一个会话密钥分别对发送以及接受的信息q行加、解密?

 



The One 2006-09-16 09:39 发表评论
]]>
关于groovy的一些用?http://www.tkk7.com/huj/archive/2006/09/16/70001.htmlThe OneThe OneSat, 16 Sep 2006 01:38:00 GMThttp://www.tkk7.com/huj/archive/2006/09/16/70001.htmlhttp://www.tkk7.com/huj/comments/70001.htmlhttp://www.tkk7.com/huj/archive/2006/09/16/70001.html#Feedback0http://www.tkk7.com/huj/comments/commentRss/70001.htmlhttp://www.tkk7.com/huj/services/trackbacks/70001.html
最q用groovy写了一个程序生成器,因ؓ公司原来的生成程序太原始?直接是JSP调我们自已的业务中间件的,新生成后的程序采用了spring的框?用到的技术主要是groovy+Template,写的q程中也到了一些问?解决后希望与大家׃n.具体关于如何使用groovy以及用groovyq行模板~程Q请查看QQ上的实战groovypd的文章.
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一个patternQ如果要指定不区分大写Q与perl,ruby语言有些不同Q查jdk官方Ҏ得知,如上代码??i)OQ了Q?br />注意Q在groovy中可以这样写

def  matcher =   " string "   =~  pattern

此时的patternZQ而不能是正则表达?
3.java中的匿名cMgroovy中的闭包
生成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ȝ只能用在swingcM那些listener的接口,具体l节查看官方文Q?a >http://groovy.codehaus.org/Groovy+Beans
要用groovy来完成上面的E序有两U方法,W一是用java完成后,提供lgroovy来调用,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二个匹?



The One 2006-09-16 09:38 发表评论
]]>
Groovy入门http://www.tkk7.com/huj/archive/2006/09/16/69999.htmlThe OneThe OneSat, 16 Sep 2006 01:37:00 GMThttp://www.tkk7.com/huj/archive/2006/09/16/69999.htmlhttp://www.tkk7.com/huj/comments/69999.htmlhttp://www.tkk7.com/huj/archive/2006/09/16/69999.html#Feedback0http://www.tkk7.com/huj/comments/commentRss/69999.htmlhttp://www.tkk7.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



The One 2006-09-16 09:37 发表评论
]]>
下次K歌就Kq个-我的名字叫依?/title><link>http://www.tkk7.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.tkk7.com/huj/archive/2006/09/15/69970.html</guid><wfw:comment>http://www.tkk7.com/huj/comments/69970.html</wfw:comment><comments>http://www.tkk7.com/huj/archive/2006/09/15/69970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huj/comments/commentRss/69970.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huj/services/trackbacks/69970.html</trackback:ping><description><![CDATA[ <div id="31fhvvn" class="\"quote\""> <div id="hlzpjbl" class="\"quote-title\"">引用</div> <div id="399rvb9" class="\"quote-content\"">依琏Q舒麦贝依琏Q舒唏嘘娜菲Q古玛丽依斯午~~U儿?<br />依琏Qshe没说妹笨儿,q腹吗啡一Q狗my life~~U儿。?<br />舒服太,土匪~~莱姆?萨普莱姆Q土匪~~莱姆?<br /><br />依琏Q舒麦贝依琏Q舒唏嘘娜菲Q古玛丽斯午~~U儿?<br />依琏Qsee麦美so布林恩。Do have do 不玩。瘦奶寒毒~~U儿? <br />舒服太,土匪~~莱姆?萨普莱姆Q土匪~~莱姆?<br /><br />依曼Qshe日爱吗服毒,d里show now。晒狗soon卖弄?<br />白蒜Qno model ԌluQ丝袜。共舒后U大Q白蒜那非买U母狗 老死狗系戴利泡死的?<br /><br />依琏Q舒麦贝依琏Q舒唏嘘娜菲Q古玛丽斯午~~U儿?<br />舒服太,土匪~~莱姆?萨普莱姆Q土匪~~莱姆?br /><br />依曼Q狗带来了believe, woo,my home get day 。苏黑里showed it ?<br />白蒜Qno model ԌluQ丝袜。共梛_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="z399h39" 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.tkk7.com/huj/aggbug/69970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huj/" target="_blank">The One</a> 2006-09-15 21:01 <a href="http://www.tkk7.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.tkk7.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.tkk7.com/huj/archive/2006/09/12/69228.html</guid><wfw:comment>http://www.tkk7.com/huj/comments/69228.html</wfw:comment><comments>http://www.tkk7.com/huj/archive/2006/09/12/69228.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.tkk7.com/huj/comments/commentRss/69228.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huj/services/trackbacks/69228.html</trackback:ping><description><![CDATA[      狱又出W二季,每周一集的{待真是隄啊,没想到老美也这么能,q种播放周期使我惌v了去q看木村的那部讲方程式赛车手的故事的电视剧集Q名字忘CQ有兴趣者到GOOGLE上搜一下,呵呵Ql讲狱Q记得里面有句让我记忆蛮q话,如果一个h的脑子对一件事有太多反映的话,他不是神_是高IQ的hQ剧集中的主人公是q类人物Q徏{架构师Q和我们ITpȝ架构师有得拼啊,搞不好他来做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.tkk7.com/huj/aggbug/69228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huj/" target="_blank">The One</a> 2006-09-12 20:31 <a href="http://www.tkk7.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"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://fzgjw.com" target="_blank">վ߹ۿ </a>| <a href="http://wwwzs88.com" target="_blank">þ޾Ʒ</a>| <a href="http://350725.com" target="_blank">ۺ</a>| <a href="http://kmyake.com" target="_blank">av뾫Ʒþþ</a>| <a href="http://468862.com" target="_blank">þþ99Ʒѹۿ</a>| <a href="http://dqmovie.com" target="_blank">޳av</a>| <a href="http://51wdn.com" target="_blank">Ƶ߹ۿ</a>| <a href="http://lzqzvip.com" target="_blank">һ</a>| <a href="http://7766ks.com" target="_blank">ɫһëƬѿ</a>| <a href="http://szclinic.com" target="_blank">ɫ͵ר</a>| <a href="http://caoliusq1024.com" target="_blank">Ѳһ</a>| <a href="http://fl6fe.com" target="_blank">պ˳ۺձ</a>| <a href="http://sdsxyz.com" target="_blank">þ޾Ʒ</a>| <a href="http://j8j8x.com" target="_blank">ҹƷ</a>| <a href="http://www-84243.com" target="_blank">ѹۿavëƬվ</a>| <a href="http://haigoumama.com" target="_blank">Ʒ</a>| <a href="http://xian66.com" target="_blank">Ļ</a>| <a href="http://miya863.com" target="_blank">Ʒѿþþ </a>| <a href="http://a8g8.com" target="_blank">߿һ</a>| <a href="http://www62hth.com" target="_blank">й߹ۿѸ</a>| <a href="http://977446.com" target="_blank">޾ƷƬ</a>| <a href="http://bixnu.com" target="_blank">޾Ʒ鶹av</a>| <a href="http://aierphoto.com" target="_blank">Ů߲վ</a>| <a href="http://qiyupu.com" target="_blank">Ľղ2021</a>| <a href="http://eaivan.com" target="_blank">Ƶۿ</a>| <a href="http://rr7733.com" target="_blank">ĻƵ</a>| <a href="http://tccqdy.com" target="_blank">޹Ʒ˾Ʒ</a>| <a href="http://tsj68.com" target="_blank">߲</a>| <a href="http://fcw70.com" target="_blank">ƵƵ</a>| <a href="http://ajguild.com" target="_blank">޳˸</a>| <a href="http://tianmao920.com" target="_blank">mm1313޾Ʒ</a>| <a href="http://cebeke.com" target="_blank">Ƭ߹ۿƵ</a>| <a href="http://33eaa.com" target="_blank">91Ƶ߹ۿ</a>| <a href="http://mmm19.com" target="_blank">߾þþƷĹ</a>| <a href="http://zhaoav7.com" target="_blank">߹ۿһƬ</a>| <a href="http://bnb989.com" target="_blank">ɫ͵͵ɫݺ99</a>| <a href="http://hzsprfm.com" target="_blank">Ļר</a>| <a href="http://cnepu.com" target="_blank">ĻmvƵ8</a>| <a href="http://9522952.com" target="_blank">Ѳһ</a>| <a href="http://56aaaa.com" target="_blank">ĻۺСۺ</a>| <a href="http://xww678.com" 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>