java Applet

网页脚本编程的原理

html语言只是一种标记语言,只能定义内容的表现形式,比如颜色、字体等。不具有逻辑性,不能与用户进行交互。如果浏览器在解释html语言的基础上,还能够解释运行嵌入在网页文件中的一种具有程序逻辑的语言,那么网页就像平时用到的windows程序一样,能够与程序交互。这种嵌入在html中的程序语言,就称为脚本语言。浏览器中要有能解释脚本语言的模块,即脚本引擎。在script标签之间的便是这种脚本程序。java Applet就是这样一种脚本程序,必须嵌套在网页中使用。

Applet中没有main方法,有浏览器启动,执行过程如下:

首先由浏览器载入HTML文件,当浏览器解释这个HTML文件时,发现其中引用的applet以后,浏览器会载入HTML文件中Applet程序的字节码,最后浏览器启动java虚拟机执行Applet

Applet类小程序通常需要覆盖的方法:

init()方法:在Applet对象创建以后,java解释器就会立即调用此方法,以通知Applet对象进行初始化。在Applet对象生存期间只调用一次。

start()方法:在执行完init方法后,便执行start方法,浏览器离开创建Applet的页面后,Applet程序停止运行,但Applet对象不会消失,当浏览器回到这个页面后,不需要创建新的对象,而是(自动)调用原对象的sart方法。

stop()方法:与sart方法配合,使得浏览器离开创建Applet的页面后,自动调用此方法,使得Applet程序停止运行,以节省资源的开销。

destroy()方法:当关闭浏览器,Applet对象被销毁之前调用,释放init中初始化的资源。再该方法调用之前,肯定调用过了stop方法。

paint()方法:因为AppletPanel的子类,所以可以在上面添加组件,显示图像,绘制图形等,同其他的组件一样,Applet每次在启动后,其paint方法会被调用。

 

变成举例:在applet中实现动画。

import java.awt.*;

import java.applet.*;

 

public class MyApplet extends Applet implements Runnable{

       int index;

       Image []imgs=new Image[10];

       public void init() {

              for(int i=0;i<10;i++)

              {

                     imgs[i]=this.getImage(getCodeBase(),"imgs//T"+(i+1)+".gif");

//Applet有自己的getImage方法,getCodeBase():获取其所在的Applet的基准URL地址

//因为Applet运行在网络中,所以getImage方法的第二个参数应为相对地址,即

//相对Applet字节码文件的相对地址。以上两个参数便可确定图像的绝对地址。

              }

              new Thread(this).start();

       }

 

       public void paint(Graphics g) {

              g.drawImage(imgs[index],0,0,this);//先执行此句

              g.setFont(new Font(null,Font.BOLD|Font.PLAIN,30));

              g.drawString(""+index,0,60);

 

       }

       public void run()

       {

              while(true)

              {

                     try

                     {

                            Thread.sleep(100);

                     }

                     catch(Exception e)

                     {

                            e.printStackTrace();

                     }

                     index=(index+1)%10;

                     repaint();

              }

       }

 

}

容器与插件的程序架构设计模式

例如,浏览器是Applet运行的一个容器,Applet就是浏览器中的一个插件,插件的运行完全是由容器来控制和调度的,容器是真正的应用程序,插件只是提供了一些约定的函数或者方法供容器去调用。

 

因为Applet的运行是从服务器主机上动态下载到浏览器所在的客户机上进行的,所以为了保障Applet运行时的安全性,Applet有些限制:不能启动执行其他应用程序;不能进行文件I/O操作;不能调用本机代码;不能与Applet所在的主机之外的其他主机进行网络连接。

 

HTML中的<applet>标记

<applet>标记被用来在HTML文件当中引用Applet小程序,在一个网页当中可以使用多个<applet>标记来引用多个Applet小程序。<applet>标记中用中括号包起来的属性为可选属性,没有用中括号包起来的属性为必不可少的属性。

 

archive属性用于指定Applet程序执行前,要被预先载入到浏览器中的java字节代码和一些资源的压缩文件。我们可以将Applet程序和一些资源打包成jar文件,然后用archive属性指明压缩文件的名称。浏览器在解释执行Applet程序时,就会从jar文件当中查找运行Applet所需的资源文件,如果要在archive属性当中指定多个压缩文件,这多个压缩文件之间要用逗号隔开。

code属性用于指定要执行的Applet的类名,这个类名中的.class后缀有无均可。浏览器查找这个Applet类的完整路径,是由引用这个<applet>标记的HTML文件的路径地址和codebase属性共同决定的

widthheight指定Applet程序在浏览器中的初始显示大小

codebase属性指定AppletHTML文件的相对路径,或Applet绝对路径,如果没有设置该属性,则表明Applet与引用AppletHTML文件在同一目录文件中。若该属性指定的是Applet绝对路径,则Apple可以不与引用它的HTML文件在同一主机上。

alt属性指定浏览器不支持<applet>标签时,在applet的显示区域显示一些替代文本,说明applet的作用。可以直接在Applet的标签对当中,插入普通的html文本或者其他的标记。也可以在applet不能正常现实的情况下,作为替代信息显示在applet当中。

name属性指明了applet的实例名称,通过对applet的命名,相同网页当中的applet就可以调用getApplet的方法来访问另一个applet实例对象。从而实现同一网页中的个applet的通信。javascript也可以通过该属性访问applet

align属性指定applet的对齐方式。applet的实际显示大小(内部矩形区域)与它在浏览器中所占用的空间(外部矩形区域)是不一样的,那么这个内部矩形区域与外部矩形区域的

对齐方式就有该属性决定。

vspacehspace属性制定了applet实际显示区域即内部矩形区域与外部矩形区域的水平、垂直间隔。

嵌套在applet标记对中的param标记,指定了传递给applet的初始化参数,paramname属性指定了参数的名称,value属性指定了要传递的参数的值,applet内程序代码可以调用getParam方法获得param要传递的参数的信息。如:

<applet

   [archive=archiveList]

   code=appletFile.class

   width=piexls height=pixels

   [codebase=codebsseURL]

   [alt=alternateText]

   [name=appletInstanceName]

   [align=alignment]

   [vapace=pixels] [hspace=pixels]

   [<param name=appletAttrbute1 value=value>]

   …….

</applet>

 

使用HTMLConverter<applet>标记转换成<OBJECT>标记时,注意转换后的文件与原文件重名,即会把原文件覆盖掉,因此必要时要做个备份。用HTMLConverter<applet>标记转换成<OBJECT>标记在命令行中的输入例如:htmlconverter MyApplet.htmHTMLConverter转换后的文件格式是linux操作系下的文本格式,window记事本下无法正常显示回车换行。

使用<OBJECT>标记执行applet小程序的java解释器被作为一个ActionX插件引用。这时候作为网页中的插件的是java解释器,而不是applet小程序本身,使用<OBJECT>标记比

applet标记多了自动下载和安装java解释器的功能,能通过<OBJECT>标记的codebase属性获得下载路径与版本。

 

当不同的网页中调用同一个Applet类的时候,浏览器访问每一个网页时,Applet一般都会产生一个新的实例对象。但是如何产生和调用Applet的实例对象,完全由嵌套在浏览器中的java解释器来控制,不同的厂家,甚至同一厂家的java解释器也存在差异,因此会出现不同效果。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值