星期四, 2月 08, 2007

Applet利用數位簽章實現網頁中存取硬體資源

近來搞Java Applet搞的一個頭兩個大,語音的部分目前是用Application的方法可以Run但是放到網頁裡面的時候一直會因為access deny讓我整個很灰心,找到方法知道需要有數位簽章,Applet才可以在網頁中使用到用戶端的硬體資源,例如存取檔案或是像我們需要用到麥克風。
那麼找到下面的方法來註冊簽章:
1.create a new key in a new keystore
keytool -genkey -keystore myKeystore -alias myself
使用keytool 來得到一個叫做myKeystore 的簽章檔案

2.create a self-signed test certificate
keytool -selfcert -alias myself -keystore myKeystore
作設定的動作

3.sign the JAR file with the test certificate
jarsigner -keystore myKeystore test.jar myself
使用jarsigner 來把數位簽章註冊到你的檔案中,此範例為test.jar.

這三個步驟看似簡單,但是如果稍不注意還是很多人會問問題!
問什麼呢?
不能用這兩個命令!
這點需要檢查你的path有沒有設定到你的JDK下面BIN的路徑

再來就是我自己的問題!把Applet放進Jar檔裡面註冊好但是發現不能使用在網頁中。沒錯!Jar當然不是直接擺在網頁裡,而是要透過Object來置放。
有下面三種方法可以放Applet到網頁中。
Using the applet Tag
You use the applet tag to deploy applets to a multi-browser environment.
Using the object Tag
You use the object tag to deploy applets that are to be used only with Internet Explorer.
Using the embed Tag
You use the embed tag to deploy applets that are to be used only with the Mozilla family of browsers.

但是裡面也只有介紹到如何把Applet放入網頁,這個也沒有解決到我的問題!
所以後來泰瑜學長提供了一個範例,讓我可以參考。裡面介紹的非常清楚。
我就節錄重要的地方來讓大家參考!當然網址為了保護當事人就取消掉了。

OBJECT classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab" WIDTH = "100%" HEIGHT = "700"
table border="3" tr td
PARAM NAME = CODE VALUE = "core.Graph.class"
PARAM NAME = CODEBASE VALUE =檔案路徑
PARAM NAME = ARCHIVE VALUE = "Graph.jar,mysql-connector-java-5.0.4-bin.jar"
(因為文章的關係不能有大小於符號XD,還一度修改了一下,所以我把符號都拿掉了!)

呵呵,當然紅色的地方是重點囉!但是我也覺得奇怪,我之前好巷有試過類似方法弄也是不太行,可能沒有用正規的Object的方式吧!

今天很高興在PTT有跟日落又通了信,他應該是個好人(遞~),加入他的連結大家有空可以去他家逛逛,照片蠻精緻的!我會寫這篇也是因為他有提到他想寫技術方面BLOG!我以前也想過多寫的好東西出來,但是因為平常一直摸都煩了,回到家只想要弄一些美女圖阿,或是好笑的東西。(我看我網站大部分搜尋進來的人都是因為這兩者XD)
或許我該弄個置頂文,把這些好康的都讓大家輕鬆找。

2 則留言:

  1. Sorry,打擾一下
    classid要在windowsXP的那一個ini下加入呢?

    回覆刪除
  2. 恩~你可以看一下這個連結的範例三

    那當然也不用那麼麻煩啦,我有回你信說沿用我寫的那個ID就OK了,就不用去做設定。(當然這不是正規方法)

    回覆刪除