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