当前位置:课程学习>>第九章 Applet程序设计>>文本学习>>知识点二


知识点二  Applet网页设计




一、HTML<applet>标记

1. Applet的调用  

为了运行前面的例子,需要建立用于调用applet的Web页面。首先将CalculatorApplet.java编译为CalculatorApplet.class,然后编写CalculatorApplet.html文件,html文件代码如下;

<html>

<head>

<title>商品价格计算applet</title>

</head>

<body>

welcome.CalculatorApplet will appear below in a Java enabled browser.<br>

<applet code=”CalculatorApplet.class” width=”400” height=”140”>

</applet>

</body>

</html>

在控制台窗口(开始->运行->输入“cmd”,回车)的提示符下,使用appletviewer命令可以运行例9.1的applet程序。

如果要通过浏览器对applet进行访问,需要把CalculatorApplet.html和CalculatorApplet.class保存在Web服务器上,通过正确的URL就能浏览到applet。

2. HTML<applet>标记

从上一节的代码中,可以观察到加载applet的HTML标记<applet>和<applet>标记的语法如下:

<applet

code = classfilename.class

width = applet_viewing_width_in_pixels

height = applet_viewing_height_in_pixels

[ codebase = applet_url ]

[ alt = alternative_text ]

[ name = applet_name ]

[ vspace = vertical_margin ]

[ hspace = horizontal_margin ]

[ align = applet_alignment ]

[ archive = archivefile ]

>

<param name = param_name_1 value = param_value_1>

<param name = param_name_2 value = param_value_2>

<param name = param_name_n value = param_value_n>

</applet>

属性code、width和height是必须的,分别指定了applet程序的类文件、可视区域的宽度和高度,各属性的含义如下:

(1) code: 用来指定包含applet字节码的.class文件。默认情况下,Web浏览器假定已编译的字节码文件和HTML文档在同一文件夹中,也可以使用codebase属性来指定一个不同的文件夹。

(2) width: 设置applet中可视区域的宽度,以像素为单位。

(3) height: 设置applet中可视区域的高度,以像素为单位。

(4) codebase: 用来设置Web浏览器所寻找的applet字节码文件的路径。例如,可以使用codebase属性值的“..”来指定包的父文件夹。

(5) alt: 用于Web浏览器识别<applet>标记而不下载或运行applet的时候。此时,applet不显示,仅以纯文本的方式显示alt属性值。典型的应用是使用该属性值来通知用户网页中包含一个不可见的applet。

(6) name: 用来设置applet的名称。如果HTML文档中有多个applet,可以通过该属性让它们之间彼此通信。另外,在JavaScript语句中也可以使用指定名称的applet。

(7) vspace: 设置applet上下边框的宽度,以像素为单位。Web浏览器会在applet的可视区域周围预留相应大小的空白区域。

(8) hspace: 设置applet左右边框的宽度,以像素为单位。用法同上。

(9) align: 该属性取值范围为left| right| top| texttop| middle| absmiddle| baseline| bottom| absbottom,用来设置当applet可视区域小于HTML的屏幕区域时,applet的对齐方式。如果applet可视区域超过屏幕区域时,则applet会自行进行剪切。

(10) archive: 用来设置含有applet文件的Java存档文件(.jar)。该属性值是一个URL,通常表示一个.jar文件或.zip文件的路径,一个.jar文件包含了applet使用的所有.class文件和其他文件。可以减少装载时间,改进执行效率。

3. Applet中传递参数

定义<param>标记,可以用来传递Web浏览器的applet参数,出现在<applet>和</applet>之间。该标记是可选的,可以没有,也可以有一个或多个。

(1) <param>的name: 用来设置applet参数的名称。

(2) <param>的value: 用来设置applet参数名称对应的参数值。

通过<param>标记指定的参数可以在applet程序中通过调用getParameter方法来获得。

【例9.2】信息显示applet程序。这个例子演示的是一个显示信息的applet。信息的文本和显示坐标值x和y由HTML文档指定。

//MessageApplet.java

import javax.swing.*;

import java.awt.*;

public class MessageApplet extends JApplet

{

   String message;

   //Initialize the applet

   public void init()

   {

      message = getParameter("message");

      Label label = new Label(message);

      getContentPane().add(label);

   }

}

<html>

<head>

<title>文本显示applet</title>

</head>

<body>

welcome.MessageApplet will appear below in a Java enabled browser.<br>

<applet code=”MessageApplet.class” width=”400” height=”100”>

<param name=”message” value=”Hello, My Applet!”>

</applet>

</body>

</html>

运行结果:

3

二、Applet应用

1. 浏览器对applet的支持

目前,包括Netscape Navigator、Microsoft Internet Explorer和Sun HotJava在内的主流浏览器都支持applet。同时,为了避免applet不被浏览器支持,Sun公司提供了Java插件(plug-in),允许用户自行安装Java运行环境(JRE),Java插件会重新替换旧的Java虚拟机(JVM)。Sun公司在最近发布的Java版本中保留了Java插件,并提供了移植工具来将已有的网页转换为Java插件(plug-in)。

网络浏览器必须设置成能运行applet程序。如果使用老版本的网络浏览器,或者仅设置成可运行使用低版本Java创建的applet程序,那么就可能无法在Web页面中运行applet程序。这时,建议用户升级为新版本的浏览器。

另外一种方法就是在编写applet时使用早期版本的Applet类,用以替换JApplet类。此时,需要导入语句:

import java.applet.Applet;

替换语句:

import javax.swing.JApplet;

同时把程序中所使用的swing组件替换为awt组件,并去掉相关的方法。

2. Applet的安全性

由于applet程序是嵌入在HTML页面中的,该applet的字节码在浏览者的主机中运行。所以说,applet程序是一种可以在他人主机上运行的程序,这就会引起许多的安全问题。例如,它是否会携带病毒,安装陷门或木马?它是否会破坏主机上的文件和数据?针对这些问题,applet被设计成为安全性的程序。

默认情况下,通过网络下载的applet字节码文件要通过字节码检验机进行检验,确保字节码符合Java虚拟机的规范。字节码检验减少了从事破坏活动者控制字节码在JVM中进行欺骗行为的机会。当applet从本地磁盘存储器中下载时,则不会调用字节码检验机。

在applet的执行过程中,applet的安全管理器对它进行强制地限制约束,包括:

(1) 不允许applet读写客户端的文件系统。然而,它能够读写源系统的文件。某些浏览器允许applet使用某个文件夹。严格地讲,applet只能访问客户端——客户端的文件。

(2) applet能够访问系统属性值的一部分,通过System.getProperty方法获得系统属性值。

(3) applet可以建立网络连接,该连接只能在下载applet的主机上通过Socket方式建立。这个约束是为了防止applet成为木马攻击者。

(4) applet不能在客户端启动其他程序。

(5) 不能通过调用System.exit方法来关闭Web浏览器。

(6) applet对System类定义的共享代码库的LoadLibrary方法无效。

(7) applet不能使用本地方法。本地方法是指用非Java语言编写的代码,并运行在JVM之外。因为无法确认它的运行结果,本地方法被认为是不安全的。

 

进入知识归纳学习