新聞中心
在做一個(gè)portal項(xiàng)目時(shí),需要從portal單點(diǎn)登錄到一個(gè)C/S的業(yè)務(wù)系統(tǒng),這樣就需要從瀏覽器調(diào)用客戶端本地的單點(diǎn)程序SSO,進(jìn)而進(jìn)入C/S的業(yè)務(wù)系統(tǒng)。想了一下有兩種解決辦法,一是寫一個(gè)dll或ocx控件去調(diào)用SSO,二是通過applet調(diào)用SSO。

為垣曲等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及垣曲網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都做網(wǎng)站、垣曲網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
最后我們選擇了applet的方式,在寫的過程中,發(fā)現(xiàn)細(xì)節(jié)問題還挺多,現(xiàn)我把它列舉出來,希望你少走彎路。
一、先看看一個(gè)簡單的applet.
- import java.applet.*;
- import java.awt.*;public class HelloApplet extends Applet
- {public void paint(Graphics g) { g.drawRect(0, 0, 499, 149);
- g.drawString("Printing...", 5, 70);}}
以下是html頁面:
A Simple Program TITLE> - HEAD>
- CODE=" HelloApplet.class" WIDTH="500" HEIGHT="150">
- APPLET>
- CENTER>
- BODY>
- HTML>
運(yùn)行的前提是把編譯后的HelloApplet.class拷貝的和html同一個(gè)目錄下。這是個(gè)很簡單的例子,但這樣簡單的例子在實(shí)際應(yīng)用中用處很少。
二、下面接著學(xué)一下applet的標(biāo)簽的用法。
先學(xué)習(xí)一下applet標(biāo)簽的屬性:
Width: Applet在Html頁面上的寬度
Height : Applet在Html頁面上的高度
Name : Applet在Html頁面上的名稱,用于區(qū)名一個(gè)Html頁面上的多個(gè)Applet。
Id:為 applet 指定一個(gè) id 屬性,從而能夠?qū)⑵渥鳛楹唵蔚膶ο筇幚恚胘avascript調(diào)用其對象的方法。
Archive: 當(dāng) applet 被存儲(chǔ)在某個(gè) JAVA 檔案文件或 ZIP 文件中時(shí),此 applet 的 URL。
Code: 執(zhí)行 applet 的 class 的 URL。
Codebase: 指示 applet 的基準(zhǔn) URL,假如 code 屬性是相對的。
Param:傳遞參數(shù)。
這些屬性里面,可能最容易出現(xiàn)錯(cuò)誤的是Code和Codebase屬性。舉個(gè)例子可能就明白了:
假如我的web工程下有個(gè)index.jsp的頁面放在根目錄下,該頁面需要調(diào)用一個(gè)applet,而這個(gè)HelloApplet.java在com包下。正確的做法是先把HelloApplet.class拷貝到index.jsp的同一目錄下,然后
- "com.HelloApplet.class" id="helloApplet" codebase="."/>
注意:
1、 code一定要寫包名,codebase="."表示是從index.jsp的當(dāng)前目錄開始。
2、 一定要把HelloApplet.class拷貝出來放到j(luò)sp的頁面目錄下,如果放到web-info/classes/com/下就會(huì)出錯(cuò),因?yàn)閣eb-inf文件夾安全性比較高,客戶端無法訪問的。
#p#
三、下面我們看一個(gè)復(fù)雜的例子,這個(gè)例子中前臺(tái)的頁面需要調(diào)用的applet不是一個(gè)class,這樣就需要調(diào)用一個(gè)jar包,而且這個(gè)applet需要調(diào)用客戶端本地的應(yīng)用程序。
(1) Applet類:
- package com;import java.applet.*;
- import java.awt.*;import java.io.IOException;
- public class HelloApplet extends Applet { public void paint(Graphics g)
- { g.drawRect(0, 0, 499, 149);
- g.drawString("Hello World", 5, 70); } /** * 通過applet調(diào)用本地的計(jì)算器 */
- public void openApp() { String url = "C:\\WINDOWS\\system32\\calc.exe";
- System.out.println("url=" + url);
- try { Runtime.getRuntime().exec(url); }
- catch (IOException e) { e.printStackTrace(); } }}
jsp頁面:
- <%@ page language="java"
- import="java.util.*" pageEncoding="GBK"%>
- "-//W3C//DTD HTML 4.01 Transitional//EN">
- "com.HelloApplet.class" id="helloApplet" codebase="."
- ARCHIVE = "helloApplet.jar" WIDTH="500" HEIGHT="150">
"#" onclick="openApp()">計(jì)算器
"text/javascript">- function openApp() { var helloApplet = document.getElementById("helloApplet");
- helloApplet.openApp(); }
(3)把HelloApplet打成jar包,因?yàn)樵趯?shí)際的應(yīng)用中一個(gè)類就能解決問題的情況很少。Cmd 切換到web-info/classes目錄下,通過如下命令打包:
jar -cvf helloApplet.jar *.* |
(4)為了使得applet能夠訪問本地的應(yīng)用,需要給它簽名。
keytool -genkey -keystore hello.store -alias hello |
這個(gè)命令用來產(chǎn)生一個(gè)密匙庫,執(zhí)行完畢后應(yīng)該產(chǎn)生一個(gè) hello.store的文件,這個(gè)名字你可以對它進(jìn)行修改。另外在執(zhí)行命令的時(shí)候還有提示你輸入密匙庫的密碼,這里你一定要記住,否則后面要用的時(shí)候無法輸入。輸入密碼后,它會(huì)提示你輸入用戶名,公司名等信息,這些都不是必須輸入的,你可以直接回車跳過,最后問你輸入是否正確,你可以輸入y或n回答正確或錯(cuò)誤。
keytool -export -keystore hello.store -alias hello -file hello.cert |
這個(gè)命令用來產(chǎn)生簽名時(shí)所要用的證書,這個(gè)命令執(zhí)行完后產(chǎn)生一個(gè)pepper.cert的文件。
jarsigner -keystore hello.store helloApple |
這個(gè)命令用上面產(chǎn)生的證書將我們的jar文件進(jìn)行了簽名。最后把該jar包拷貝到j(luò)sp文件所在地目錄下。
(5)因?yàn)閍pplet的運(yùn)行是沙箱機(jī)制,在調(diào)用本地程序時(shí)需要做安全性設(shè)置。在本地運(yùn)行該applet的jre\lib\security\java.policy文件里最后加permission java.security.AllPermission;這里需要注意的是如果客戶端裝有多個(gè)jre的話,需要找一下哪個(gè)jre是真正運(yùn)行applet的。
(6)在運(yùn)行的時(shí)候,第一次會(huì)提示是否信任該applet,點(diǎn)擊使準(zhǔn)信任,然后運(yùn)行,下次就不會(huì)在提示。
注意:在用瀏覽器調(diào)試applet的過程中,可以打開java控制臺(tái),位置在Ie的工具菜單的java控制臺(tái)。
【編輯推薦】
- Java Applet中應(yīng)用JDBC訪問數(shù)據(jù)庫
- Java Applet編程小技巧之文字顯示
- Java Applet編程顯示圖像
- Java Applet編程技巧之文字顯示
網(wǎng)頁名稱:Javaapplet實(shí)例詳解
網(wǎng)站URL:http://m.fisionsoft.com.cn/article/cdcdogd.html


咨詢
建站咨詢
