PowerPoint Template
Download
Report
Transcript PowerPoint Template
全国高职高专计算机技能型人才培养系列规划教材
Java程序设计基础
第8 章 Java Applet
www.avceit.cn
Contents
1
Java Applet的特点
2
Java与HTML的关系
3
Applet的创建与生命周期
4
HTML与Applet之间的参数传递
第8 章
Java Applet
Java Applet又被称为Java小程序。
经编译后可被嵌入HTML文件中,通过Web浏
览器下载和执行的一种Java类。
不需要main()方法,由Web浏览器内置的Java
解释器执行。
本章将首先介绍Java Applet和超文本标记语
言HTML及其它们之间的关系,接着介绍Java
Applet的运行过程、HTML和Applet之间的参
数传递等内容。
Applet的基本工作原理图
下载字节码文件
WWW浏览器
WWW服务器
浏览网页
执行字节码文件
Java解释器
内嵌applet
8.1 Java Applet的特点
Java Applet运行在一个窗口环境中,提供
基本的绘图功能,动画和声音的播放功能,
可实现内容丰富多彩的动态页面效果、页
面交互功能,实现网络交流能力。
Applet是Java在网络上广为使用的程序,
也是Java语言迅速推广并流行的重要因素。
Applet是动态的、安全的、跨平台的,它应
嵌入到HTML语言中,通过网页发布到
Internet,并在支持Java的浏览器中运行。
Java的Applet与Application的区别:
Application是独立程序,必须有一个main()方法,可直接
通过Java解释器来解释运行,当程序开始运行时,解释器
首先查找main()方法并执行;
Applet则没有main()方法,它必须通过<applet>标签将编
译后的字节码文件嵌入在HTML文件中,由支持Java
Applet的浏览器或JDK中模拟浏览器环境的
appletviewer.exe来运行。
Applet有些类似于组件,它实现的功能是不完全的,它必
须借助于浏览器中预先设计好的功能和已有的图形界面。
Applet所做的,是接收浏览器发给它的消息和事件,并做
出及时反应。另外,为了协调与浏览器的合作过程,
Applet中有一些固定的只能由浏览器在特定时刻和场合调
用的方法。
Applet的安全限制:
Applet不能加载库函数或定义本地方法。
Applet一般不能读写浏览器用户的文件系统。
Applet只能与存放该Applet的服务器通信,不
能和其它的服务器通信。
Applet也不能调用用户系统上的本地(native)
方法和各类共享库;不能读取某些系统特性;
Applet打开的窗口和Application打开的窗口在
外观上有所不同。
Applet不能直接运行另一个程序。
除此之外,java语言本身还在编译器及解释
程序中包含了各种形式的安全性和一致性
检查,以防止语言的错误运用。这种限制
与安全性检查的结合,使得有恶意的Applet
很难对用户的系统造成破坏。
Applet不仅支持图形和文本,还支持图像、
声音、动画、视频等多媒体。
Applet能够做的事情:
可以和它所在的Web服务器建立网络连接;
能使Web浏览器方便地显示HTML文档内容;
离开网页后Applet可以继续运行也可以停止运行;
可在状态栏显示短信息;
可以调用同个网页上的其他Applet中的公共方法;
可以播放声音文件;
可以从HTML的<applet>标签中获取参数;
从本地计算机加载Applet时没有从网络加载时所附带
的限制。
8.2 Java与HTML的关系
8.2.1 HTML语言
Java Applet必须嵌入在HTML语言中执行。
HTML语言是HyperText Markup Language的简写,
称超文本标记语言。
HTML是网页设计语言,一个HTML文件定义一个
Web页,文件的扩展名为.html或.htm。可用文本
编辑器打开HTML源文件,编辑修改Web页,其
源代码由浏览器解释执行,WWW浏览器可以理
解这些标记,并按照标记的要求在浏览器的显示
页面中把HTML文件中的信息显示出来。
HTML语言不是编程语言而仅是描述性语言,
其最明显特点是在文本中加入标签对“<>”、
“</>”。例如,<HTML>和</HTML>、
<BODY>和</BODY>等。也有些标记可以
单独使用,例如,<CENTER>、<P>等。
常用的HTML标记及意义见表8.1 。
举例:
【例8.1】一个简单的HTML文件(文件扩展名为.html或htm)。
HTML文件是文本文件,可用任一文本文件编辑器进行编辑,HTML
语言标记不区分大小写。
<HTML>
<HEAD>
<TITLE>Java HTML Test</TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT SIZE=”4” COLOR=”RED”>This is a HTML Test.</FONT>
<HR WIDTH=”200”><P>
<A HREF=”APPLET.HTM”><I>Java Applet</I></A><P>
<A HREF=”APPLICATION.HTM”><I>Java Application</I></A><P>
<HR WIDTH=”200”></CENTER>
</BODY>
</HTML>
运行结果:
8.2.2 在HTML文件中嵌入Applet
Applet只有嵌入到HTML文件中才能被显示执行,而Applet嵌入到HTML网页文件
中是通过 <APPLET>标记来实现的。在一个Applet标记单元中,包含如下参数:
<APPLET
[CODEBASE=codebaseURL]
CODE=AppletFile
[ALT=alternateText]
[NAME=AppletinstanceName]
WIDTH=pixels
HEIGHT=pixels
[ALIGN=alignment]
[VSPACE=pixels]
[HSPACE=pixels]
>
<PARAM NAME=AppletAttribute VALUE=value>
<PARAM NAME=AppletAttribute VALUE=value>
…
alternateHTML
</APPLET>
加方括号的参数是可选的,Applet标记的参数解释如下:
(1)CODEBASE=codebaseURL
决定Applet的URL位置和目录,若默认,则使用当前HTML页面的路
径。例如:
CODEBASE=”http://java.sun.com/Applets”
(2)CODE=AppletFile
指出Applet的Applet子类名字。它的路径是相对于CODEBASE而言的,
而能为绝对路径。例如:
CODE=”Clock.class”
(3) ALT=alternateText
指明当浏览器不能执行Applet时所显示的文字。
(4)NAME=AppletinstanceName的通信中做标识符。
指出Applet实例的名称,多用于在多个Applet
(5)WIDTH=pixels和HEIGHT=pixels
指定Applet显示区域的大小,单位为像素点数。
(6)ALIGN=alignment
设置Applet在页面上的排列对齐方式,有LEFT、RIGHT、CENTER、
TOP、TEXTTOP、MIDDLE、ABSMIDDLE、BASELINE、BOTTOM、
ABSBOTTOM等多种。
(7)VSPACE=pixels和HSPACE=pixels
设置Applet与周围文本之间的间距,单位是像素。
(8)PARAM NAME=AppletAttribute VALUE=value
从外界获取参数。PARAM的属性包括 NAME和VALUE两个,其中
NAME给出参数名,VALUE给出参数值。一个Applet单元可以包含多个
PARAM单元。
(9)alternateHTML
标识文字在不支持Applet标记的浏览器中显示,代替 Applet。
例如,要把一个名为MyApplet.class的字节码文件嵌入HTML文件中,
可以采用如下格式:
<Applet CODE=MyApplet.class WIDTH=200 HEIGHT=50></Applet>
注意:HTML标记名字不分大小写,但值分大小写。
8.2.3 Applet的的执行
1、用appletviewer执行
JDK开发环境中提供的小程序观察器appletviewer.exe是
一个浏览Applet的简易工具,它仅仅使用HTML文件中需
要运行Applet的各种信息,而其他内容将不会被显示出来。
2、在浏览器中运行
支持Java Applet的浏览器运行嵌入Applet单元的HTML文
档即可运行其中的Applet程序,但常见的浏览器只能支持
JDK1.1版的Java Applet。若需要使用新版本的Java SDK
来开发浏览器可运行Java Applet,安装Java SDK相应版
本的插件,并需用HtmlConverter.exe程序来变换原HTML
文档为新的HTML文档格式。
8.3 Applet的创建与生命周期
1. Applet 类的层次
所有的Java Applet都必须声明为
java.applet.Applet类的子类或
javax.swing.JApplet类的子类。通过这个
Applet类或JApplet类的子类,才能完成
Applet与浏览器的配合。
继承Applet类或JApplet类不仅可以使
Applet能在浏览器内运行,还可以让
Applet具有一般Java Appliaction不具有的
能力,如播放音乐。
类java.applet.Applet是java.awt.Panel的子
类,其层次结构见API文档:(略)
Applet本身就是一个容器,它默认的布局管
理器是FlowLayout。
Applet类和JApplet类是public类,编写的
Applet主类也必须声明为public,否则不能
被浏览器加载。
8.3.2 Applet的生命周期
Applet从开始载入、运行到停止、消亡的整个过
程称为Applet的生命期。例如:
例8.2 编写一个显示Applet生命周期的程序,显示
情况如图8.2和图8.3。
import java.applet.Applet;
import java.awt.Graphics;
public class AppletLife extends Applet{
public void init(){
System.out.println(“初始化…”);
}
public void start(){
System.out.println(“开始…”);
}
public void stop(){
System.out.println(“停止…”);
}
public void paint(Graphics g){
System.out.println(“显示…”);
g.drawstring(“Hello!”,30,30);
}
public void destroy(){
System.out.println(“清除…”);
}
}
Applet的主要运行过程。
1.初始化
在Java Appliaction中,程序是从main()方
法开始执行的,而Applet则不同。浏览器在
运行Applet时,首先执行Applet的构造方法,
然后调用Applet中的init()方法进行一些基本
的初始化工作。
init()方法是在Applet被第一次载入或重新载
入时运行的。在整个Applet的生命周期中,
初始化操作只进行一次。
2.启动
在init()方法之后执行start()方法,该方法在Applet
变得可见时被调用。当浏览器窗口被图标化后又重
新恢复原大小时也会调用该方法。
init()和start()方法的任务是激活Applet。在Applet
中,没有一个方法是在Applet的生命期中自始至终
执行的。
在整个Applet的生命周期中,启动操作可发生多次。
在start()方法中可以开始运行Applet的功能,也可
以启动一个或多个线程来完成任务。一般情况下,
如果覆盖了start()就要覆盖stop()方法。
3.停止执行
stop()方法通常是在Applet变得不可见时被调用,
如用户离开当前运行Applet的画面转向另一个画
面时,或者浏览器窗口被图标化时。
在整个Applet的生命周期中,启动操作可发生多
次。当用户离开含有正在运行Applet的网页时,
浏览器将自动调用stop()方法。
stop()方法挂起Applet,可释放系统处理资源,否
则当浏览者离开一个页面时,Applet还将继续运
行。
4.清除
destroy()方法可在Applet结束时(如用户关
闭浏览器)做一些清除工作,如停止所有
仍在运行的线程,释放Applet 所占据的资
源等。
在整个Applet的生命周期中,清除操作只发
生一次。是在彻底结束对该Web页的访问
和结束浏览运行时(close exit)调用的。
在关闭浏览器时,Java解释器会自动调用
默认的清除方法。
5.画出(显示)
paint()方法可以使Applet在屏幕上显示文字和图象,在图
形环境中paint()方法可在Applet对应的Panel上显示文字和
画图。
在一个生命周期内,paint()可被浏览器多次调用。每当
Applet需要刷新的时候都会调用该方法,如浏览器窗口被
图标化后又恢复到原来的大小或浏览器窗口发生移动时就
会调用它。当Applet中包含一个动画时需要多次写屏。
paint()方法来自于java.awt包,如果需要Applet显示一些
内容的话,必需覆盖paint()方法进行写屏。
paint()方法需要一个参数,它是java.awt.Graphics类的一
个实例。因此在程序中必须引入 java.awt.Graphics;
8.4 HTML与Applet之间的参数传递
与Application可从命令行获得系统传送的参
数的情况类似,Applet可以通过HTML文件
传递外部参数。
这样做的好处是:Applet一次编译成功就可
以保持不变,如果需要Applet显示不同的内
容,仅修改HTML文件中指定的参数即可。
Applet是通过标签<applet>嵌入到HTML文
件中的,其中code、width、height是必选
属性。如果需要向Applet传递参数,可通过
param来指定。
在Applet中,通过方法:
public String getParameter(String name)可返回
HTML中param参数标记参数名为name的参数的值。
例如,若Applet被指定为使用的HTML文件为:
<Applet code=”Clock.class” width=50 height=50>
<param name=Color value=blue>
</Applet>
则调用getParameter(“Color”)返回的值为“blue”。
【例8.3】 Applet的参数传递示例
import java.applet.Applet;
import java.awt.Graphics;
public class ParamDemo extends Applet{
String string=null;
int x, y;
public void init(){
string=getParameter(“message”);
x=Integer.parseInt(getParameter(“xPos”));
y=Integer.parseInt(getParameter(“yPos”));}
public void paint(Graphics g){
if(string!=null)
g.drawString(string,x,y);
g.drawString(“参数x为”+x,30,50);
g.drawString(“参数y为”+y,30,70); }}
相应的ParamDemo. html文件内容如下所示:
<html>
<applet code=ParamDemo.class width=300
height=120>
<param name=message value=”参数传递示
例”>
<param name=xPos value=30>
<param name=yPos value=30>
</applet>
</html>
注意:
HTML中的参数值都被定义为字符串,可加
引号也可不加引号。对数值型参数需要调
用相应的方法进行转换,Java程序中调用
了整型数Integer的parseInt静态方法将返回
值转换为整型数,如:
Integer.parseInt(getParameter(“xPos”))
本章小结
Applet是这样一类Java程序, 其对应的class文件
可嵌入在HTML页中,并可由浏览器下载和执行。
Applet有严格的安全性限制,并且具有生命期,
在生命期的不同阶段执行不同的方法;Applet从
开始载入、运行到停止、消亡的整个过程称为
Applet的生命期。生命期主要有4个方法,init()、
start()、stop()和destroy(),另外还有paint()方法。
开发和运行Applet主要有4个步骤,其中值得注意
的是编写包含Applet的HTML文件的编写,Java
Applet通过标签<Applet>嵌入HTML文件由浏览器
下载执行。
全国高职高专计算机技能型人才培养系列规划教材
www.avceit.cn