Applet是采用Java编程语言编写的小应用程序,该程序可以包含在 HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同。
Applet 是采用 Java 编程语言编写的小应用程序,该程序可以包含在 HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同。
含有 Applet 的网页的 HTML 文件代码中部带有<applet> 和</applet>这样一对标记,当支持 Java 的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该 Applet。
工作原理
.Java Applet 可以大大提高 Web 页面的交互能力和动态执行能力。包含 Applet 的网页被称为 Java-powered 页,可以称其为 Java 支持的网页。
当
用户访问这样的网页时,Applet 被下载到用户的计算机上执行,但前提是用户使用的是支持 Java 的网络浏览器。由于 Applet 是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者 Modem 存取速度的限制,用户可以更好地欣赏网页上 Applet 产生的多媒体效果。
在 Java Applet 中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 Applet 还提供了名为抽象窗口工具箱(Abstract Window Toolkit, AWT)的窗口环境开发工具。 AWT 利用用户计算机的 GUI 元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。目前,在网络上有非常多的 Applet 范例来生动地展现这些功能,读者可以去调阅相应的网页以观看它们的效果。
Applet 小应用程序的实现主要依靠 java.applet 包中的 Applet 类。与一般的应用程序不同,Applet 应用程序必须嵌入在 HTML 页面中,才能得到解释执行;同时 Applet 可以从 Web 页面中获得参数,并和 Web 页面进行交互。
Applet 是一种 Java 的小程序,它通过使用该 Applet 的 HTML 文件,由支持 Java 的网页浏览器下载运行。也可以通过 java 开发工具的 appletviewer 来运行。Applet 程序离不开使用它的 HTML 文件。这个 HTML 文件中关于 Applet 的信息至少应包含以下三点:
1)字节码文件名(编译后的 Java 文件,以.class 为后缀)
2)字节码文件的地址
3)在网页上显示 Applet 的方式。
一个 HTML 文件增加 Applet 有关的内容只是使网页更加富有生气,如添加声音、动画等这些吸引人的特征,它并不会改变 HTML 文件中与 Applet 无关的元素。
常用方法
applet 的超类是 panel,
public final void setStub(AppletStub stub)
//设置 Applet 的 stub.stub 是 Java 和 C 之间转换参数并返回值的代码位,它是由系统自动设定的。
public boolean isActive();// 判断一个 Applet 是否处于活动状态。
public URL getDocumentBase();// 检索表示该 Applet 运行的文件目录的对象。
public URL getCodeBase();// 获取该 Applet 代码的 URL 地址。
public String getParameter(String name);// 获取该 Applet 由 name 指定参数的值。
public AppletContext getAppletContext();// 返回浏览器或小应用程序观察器。
public void resize(int width,int height);// 调整 Applet 运行的窗口尺寸。
public void resize(Dimension d);// 调整 Applet 运行的窗口尺寸。
public void showStatus(String msg);// 在浏览器的状态条中显示指定的信息。
public Image getImage(URL url); // 按 url 指定的地址装入图象。
public Image getImage(URL url,String name);// 按 url 指定的地址和文件名加载图像。
public AudioClip getAudioClip(URL url);// 按 url 指定的地址获取声音文件。
public AudioClip getAudioClip(URL url, String name);// 按 url 指定的地址和文件名获取声音。
public String getAppletInfo();// 返回 Applet 应用有关的作者、版本和版权方面的信息;
public String[][] getParameterInfo();
// 返回描述 Applet 参数的字符串数组,该数组通常包含三个字符串: 参数名、该参数所需值的类型和该参数的说明。
public void play(URL url);// 加载并播放一个 url 指定的音频剪辑。
public void destroy();//撤消 Applet 及其所占用的资源。若该 Applet 是活动的,则先终止该 Applet 的运行。
调用 applet
大家都知道由于 java2 的安全性,对 applet 的正常调用的 html 文件已经不能再使用了,而改为 ActiveX 类型的调用。具体的又分 ie 和 nescape 的不同写法,这一些在 sun 网上都能找到现成的教程。
重要
其中我要强调一点,因为 applet 每一次的改动都需要重新打包签名,手续非常繁琐,所以在具体的实现中要将一些会变化参数放到 html 文件中来,传到 applet 中去,这一点网上文章好多,自己去看吧。
缺陷
另外一个就是有朋友问我,那这样不是太麻烦了,每一个客户端都要进行复杂的 dos 命令操作,我只能说我的水平只能将一个已经做好的客户端文件 cer 文件和 java.policy 以及 cacerts 文件直接拷贝到客户端,当然这也有缺陷,如果别人的计算机已经有了认证,就会丢失。就这些问题我们可以一起探讨。
优化
另外还有一点优化,就是在打包的时候,我这儿只讲了把所有要用的涉及到安全性的包和源程序到要打到一个包中。这样如果包非常大的话,会非常影响下载的速度,如果可以使用本地计算机的包就好了,这一点 jre 也做到了,具体的要到控制面板的 jre 控制台上去设置。这个就留着读者自己去摸索吧。
实现方法
服务器端
1.将程序需要用到的各种包文件全部解压(要用到 WEBLOGIC 的 JMS 包使用命令 jar xf weblogicc.jar),然后使用 JDK 的打包命令将编译好的监控程序.class 和刚才解压的包一起打包到一个包中。(前提我已经将监控程序和解开的包都放在同一个目录下了),都是 dos 状态下的命令,具体命令见 jdk1.3(1.2)的 bin 目录下,
命令如下:
jar cvf monitor.jar *.class
此命令生成一个名为 monitor.jar 的包
2.为刚才创建的包文件(monitor.jar)创建 keystore 和 keys。其中,keystore 将用来存放密匙(private keys)和公共钥匙的认证,alias 别名这儿取为 monitor。
命令如下:
keytool -genkey -keystore monitor.keystore –alias monitor
此命令生成了一个名为 monitor.keystore 的 keystore 文件,接着这条命令,系统会问你好多问题,比如公司名称,地址,要设定的密码等等,都可以随便写。
3.使用刚才生成的钥匙来对 jar 文件进行签名
命令如下:
jarsigner -keystore monitor.keystore monitor.jar monitor
这个命令将对 monitor.jar 文件进行签名,不会生成新文件。
4.将公共钥匙导入到一个 cer 文件中,这个 cer 文件就是要拷贝到客户端的唯一文件 。
命令如下:
keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer
此条命令将生成 monitor.cer 认证文件,当然这几步都有可能问你刚才设置的密码。这样就完成了服务器端的设置。这时就可以将 jar 文件和 keystore 文件以及 cer 文件(我这儿是 monitor.jar,monitor.keystore,monitor.cer)拷贝到服务器的目录下了。