偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Java applet實(shí)例詳解

開(kāi)發(fā) 后端
在做一個(gè)portal項(xiàng)目時(shí),需要從portal單點(diǎn)登錄到一個(gè)C/S的業(yè)務(wù)系統(tǒng),這樣就需要從瀏覽器調(diào)用客戶(hù)端本地的單點(diǎn)程序SSO,進(jìn)而進(jìn)入C/S的業(yè)務(wù)系統(tǒng)。想了一下有兩種解決辦法,一是寫(xiě)一個(gè)dll或ocx控件去調(diào)用SSO,二是通過(guò)applet調(diào)用SSO。最后我們選擇了applet的方式,在寫(xiě)的過(guò)程中,發(fā)現(xiàn)細(xì)節(jié)問(wèn)題還挺多,現(xiàn)我把它列舉出來(lái),希望你少走彎路。

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

最后我們選擇了applet的方式,在寫(xiě)的過(guò)程中,發(fā)現(xiàn)細(xì)節(jié)問(wèn)題還挺多,現(xiàn)我把它列舉出來(lái),希望你少走彎路。

一、先看看一個(gè)簡(jiǎn)單的applet.

  1. import java.applet.*;
  2. import java.awt.*;public class HelloApplet extends Applet 
  3. {public void paint(Graphics g) {      g.drawRect(00499149);      
  4. g.drawString("Printing..."570);}}  

 

以下是html頁(yè)面:

  1. <HTML> 
  2. <HEAD> 
  3.    <TITLE>A Simple ProgramTITLE> 
  4. HEAD> 
  5. <BODY> 
  6.    <CENTER> 
  7.            <APPLET CODE=" HelloApplet.class" WIDTH="500" HEIGHT="150"> 
  8.       APPLET> 
  9.    CENTER> 
  10. BODY> 
  11. HTML> 

運(yùn)行的前提是把編譯后的HelloApplet.class拷貝的和html同一個(gè)目錄下。這是個(gè)很簡(jiǎn)單的例子,但這樣簡(jiǎn)單的例子在實(shí)際應(yīng)用中用處很少。

二、下面接著學(xué)一下applet的標(biāo)簽的用法。

先學(xué)習(xí)一下applet標(biāo)簽的屬性:

Width:     Applet在Html頁(yè)面上的寬度
Height :    Applet在Html頁(yè)面上的高度
Name :    Applet在Html頁(yè)面上的名稱(chēng),用于區(qū)名一個(gè)Html頁(yè)面上的多個(gè)Applet。

Id:為 applet 指定一個(gè) id 屬性,從而能夠?qū)⑵渥鳛楹?jiǎn)單的對(duì)象處理,用javascript調(diào)用其對(duì)象的方法。

Archive: 當(dāng) applet 被存儲(chǔ)在某個(gè) JAVA 檔案文件或 ZIP 文件中時(shí),此 applet 的 URL。

Code: 執(zhí)行 applet 的 class 的 URL。

Codebase: 指示 applet 的基準(zhǔn) URL,假如 code 屬性是相對(duì)的。

Param:傳遞參數(shù)。


這些屬性里面,可能最容易出現(xiàn)錯(cuò)誤的是Code和Codebase屬性。舉個(gè)例子可能就明白了:

     假如我的web工程下有個(gè)index.jsp的頁(yè)面放在根目錄下,該頁(yè)面需要調(diào)用一個(gè)applet,而這個(gè)HelloApplet.java在com包下。正確的做法是先把HelloApplet.class拷貝到index.jsp的同一目錄下,然后

  1. "com.HelloApplet.class" id="helloApplet" codebase="."/>     

注意:

1、 code一定要寫(xiě)包名,codebase="."表示是從index.jsp的當(dāng)前目錄開(kāi)始。

2、 一定要把HelloApplet.class拷貝出來(lái)放到j(luò)sp的頁(yè)面目錄下,如果放到web-info/classes/com/下就會(huì)出錯(cuò),因?yàn)閣eb-inf文件夾安全性比較高,客戶(hù)端無(wú)法訪(fǎng)問(wèn)的。

#p#

三、下面我們看一個(gè)復(fù)雜的例子,這個(gè)例子中前臺(tái)的頁(yè)面需要調(diào)用的applet不是一個(gè)class,這樣就需要調(diào)用一個(gè)jar包,而且這個(gè)applet需要調(diào)用客戶(hù)端本地的應(yīng)用程序。

(1) Applet類(lèi):

  1. package com;import java.applet.*;
  2. import java.awt.*;import java.io.IOException;
  3. public class HelloApplet extends Applet {     public void paint(Graphics g)
  4.  {            g.drawRect(00499149);            
  5. g.drawString("Hello World"570);     }     /**      * 通過(guò)applet調(diào)用本地的計(jì)算器      */     
  6. public void openApp() {            String url = "C:\\WINDOWS\\system32\\calc.exe";            
  7. System.out.println("url=" + url);            
  8. try {                   Runtime.getRuntime().exec(url);            } 
  9. catch (IOException e) {                   e.printStackTrace();            }     }} 

jsp頁(yè)面:

  1. <%@ page language="java" 
  2. import="java.util.*" pageEncoding="GBK"%>
  3. "-//W3C//DTD HTML 4.01 Transitional//EN">
  4.           
  5. "com.HelloApplet.class" id="helloApplet" codebase="." 
  6. ARCHIVE = "helloApplet.jar" WIDTH="500" HEIGHT="150">            
  7. "#" onclick="openApp()">計(jì)算器

           

(3)把HelloApplet打成jar包,因?yàn)樵趯?shí)際的應(yīng)用中一個(gè)類(lèi)就能解決問(wèn)題的情況很少。Cmd 切換到web-info/classes目錄下,通過(guò)如下命令打包:

jar -cvf helloApplet.jar *.*

 

(4)為了使得applet能夠訪(fǎng)問(wèn)本地的應(yīng)用,需要給它簽名。

keytool -genkey -keystore hello.store -alias hello

這個(gè)命令用來(lái)產(chǎn)生一個(gè)密匙庫(kù),執(zhí)行完畢后應(yīng)該產(chǎn)生一個(gè) hello.store的文件,這個(gè)名字你可以對(duì)它進(jìn)行修改。另外在執(zhí)行命令的時(shí)候還有提示你輸入密匙庫(kù)的密碼,這里你一定要記住,否則后面要用的時(shí)候無(wú)法輸入。輸入密碼后,它會(huì)提示你輸入用戶(hù)名,公司名等信息,這些都不是必須輸入的,你可以直接回車(chē)跳過(guò),最后問(wèn)你輸入是否正確,你可以輸入y或n回答正確或錯(cuò)誤。

keytool -export -keystore hello.store -alias hello -file hello.cert

這個(gè)命令用來(lái)產(chǎn)生簽名時(shí)所要用的證書(shū),這個(gè)命令執(zhí)行完后產(chǎn)生一個(gè)pepper.cert的文件。

jarsigner -keystore hello.store helloApple

這個(gè)命令用上面產(chǎn)生的證書(shū)將我們的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;這里需要注意的是如果客戶(hù)端裝有多個(gè)jre的話(huà),需要找一下哪個(gè)jre是真正運(yùn)行applet的。

(6)在運(yùn)行的時(shí)候,第一次會(huì)提示是否信任該applet,點(diǎn)擊使準(zhǔn)信任,然后運(yùn)行,下次就不會(huì)在提示。

注意:在用瀏覽器調(diào)試applet的過(guò)程中,可以打開(kāi)java控制臺(tái),位置在Ie的工具菜單的java控制臺(tái)。

 

【編輯推薦】

  1. Java Applet中應(yīng)用JDBC訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)
  2. Java Applet編程小技巧之文字顯示
  3. Java Applet編程顯示圖像
  4. Java Applet編程技巧之文字顯示
責(zé)任編輯:仲衡 來(lái)源: 百度博客
相關(guān)推薦

2009-07-07 17:23:08

Java Servle

2011-07-04 16:04:20

Applet

2010-09-17 10:16:26

Java Applet

2011-03-09 09:11:52

java反射機(jī)制

2009-07-09 10:05:55

2010-09-17 10:41:45

Java Applet

2009-07-09 15:05:45

Servlet實(shí)例

2012-01-17 13:53:16

JavaSwing

2014-07-25 15:03:33

Linuxshellsed

2009-06-10 14:53:25

netbeans st實(shí)例

2010-06-22 10:28:04

linux at命令

2011-06-24 14:34:17

Qt 小票 打印

2009-07-03 12:48:24

Java Servle

2009-06-22 17:15:50

Java Applet拓?fù)鋱D

2022-12-02 09:02:36

Swift代碼異步

2009-07-08 18:21:27

2009-07-09 16:57:03

Servlet與App

2009-07-08 18:16:02

Applet和Serv

2011-02-28 13:04:27

RelativeLayAndroid Wid

2011-09-08 13:11:07

Android Wid實(shí)例
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)