昨天真郁悶....部門老大給我提出了一種難于想象的需求,通常我們從網(wǎng)站上下載文件都有IE彈出框。
而他對(duì)我的要求是:不要彈出IE對(duì)話框,點(diǎn)按鈕后直接把文件保存到本地。
當(dāng)時(shí)即時(shí)暈倒,都不知道是什么客戶來(lái)的,居然有這種需求。-_-!
綜合考慮后,我決定用applet在客戶端運(yùn)行一段代碼。在客戶端里用apache的開(kāi)源項(xiàng)目httpClient模擬http請(qǐng)求(如輸入用戶名密碼登陸,瀏覽某個(gè)連接下載等)。由于要涉及到讀寫客戶端的磁盤文件,所以在客戶端運(yùn)行程序的時(shí)候必定會(huì)拋出securityException。當(dāng)時(shí)在這里折騰了很久,老是把注意力里集中在修改客戶端的安全策略文件上。
事實(shí)上,有一種更好的辦法,那就是對(duì)applet程序所依賴的jar包進(jìn)行數(shù)字簽名。
步驟如下:
打開(kāi)命令行窗口,定位到c:/目錄下。
1、keytool -genkey -keystore pepper.store -alias pepper
這個(gè)命令用來(lái)產(chǎn)生一個(gè)密匙庫(kù),執(zhí)行完畢后應(yīng)該在c:/中產(chǎn)生一個(gè)pepper.store的文件,這里的pepper是我自己的名字,你可以對(duì)它進(jìn)行修改。另外在執(zhí)行命令的時(shí)候還有提示你輸入密匙庫(kù)的密碼,這里你一定要記住,否則后面要用的時(shí)候無(wú)法輸入。
2、 keytool -export -keystore pepper.store -alias pepper -file pepper.cert
這個(gè)命令用來(lái)產(chǎn)生簽名時(shí)所要用的證書,同樣這里的pepper也可以換成你自己需要的名字。這個(gè)命令執(zhí)行完后在c:/中產(chǎn)生一個(gè)pepper.cert的文件。
3、 jarsigner -keystore pepper.store myapplet.jar pepper
這個(gè)命令用上面產(chǎn)生的證書將我們的jar文件進(jìn)行了簽名。(myapplet.jar是我們項(xiàng)目中所依賴的jar包)
執(zhí)行完以上三步之后,就已經(jīng)完全可以了。而不需要像網(wǎng)上某些文章說(shuō)的那樣還要修改客戶端的安全策略文件。
最后在頁(yè)面上把a(bǔ)pplet標(biāo)記加上
<applet code="Tasdf.class" CODEBASE = "." archive="myapplet.jar" width=30 height=15>
</applet>
而他對(duì)我的要求是:不要彈出IE對(duì)話框,點(diǎn)按鈕后直接把文件保存到本地。
當(dāng)時(shí)即時(shí)暈倒,都不知道是什么客戶來(lái)的,居然有這種需求。-_-!
綜合考慮后,我決定用applet在客戶端運(yùn)行一段代碼。在客戶端里用apache的開(kāi)源項(xiàng)目httpClient模擬http請(qǐng)求(如輸入用戶名密碼登陸,瀏覽某個(gè)連接下載等)。由于要涉及到讀寫客戶端的磁盤文件,所以在客戶端運(yùn)行程序的時(shí)候必定會(huì)拋出securityException。當(dāng)時(shí)在這里折騰了很久,老是把注意力里集中在修改客戶端的安全策略文件上。
事實(shí)上,有一種更好的辦法,那就是對(duì)applet程序所依賴的jar包進(jìn)行數(shù)字簽名。
步驟如下:
打開(kāi)命令行窗口,定位到c:/目錄下。
1、keytool -genkey -keystore pepper.store -alias pepper
這個(gè)命令用來(lái)產(chǎn)生一個(gè)密匙庫(kù),執(zhí)行完畢后應(yīng)該在c:/中產(chǎn)生一個(gè)pepper.store的文件,這里的pepper是我自己的名字,你可以對(duì)它進(jìn)行修改。另外在執(zhí)行命令的時(shí)候還有提示你輸入密匙庫(kù)的密碼,這里你一定要記住,否則后面要用的時(shí)候無(wú)法輸入。
2、 keytool -export -keystore pepper.store -alias pepper -file pepper.cert
這個(gè)命令用來(lái)產(chǎn)生簽名時(shí)所要用的證書,同樣這里的pepper也可以換成你自己需要的名字。這個(gè)命令執(zhí)行完后在c:/中產(chǎn)生一個(gè)pepper.cert的文件。
3、 jarsigner -keystore pepper.store myapplet.jar pepper
這個(gè)命令用上面產(chǎn)生的證書將我們的jar文件進(jìn)行了簽名。(myapplet.jar是我們項(xiàng)目中所依賴的jar包)
執(zhí)行完以上三步之后,就已經(jīng)完全可以了。而不需要像網(wǎng)上某些文章說(shuō)的那樣還要修改客戶端的安全策略文件。
最后在頁(yè)面上把a(bǔ)pplet標(biāo)記加上
<applet code="Tasdf.class" CODEBASE = "." archive="myapplet.jar" width=30 height=15>
</applet>