又一次Applet回顾

2008-02-23 09:24:11来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Flash的出现使Applet的地位受到严重影响;

浏览器显示网页的原理
网页文件是普通的文本文件;
标记语言只能控制显示,但不具有
逻辑性,比如不可以判断用户的输入是否真确;

正是为了在瘦客户端实现交互,我们用
网页脚本;浏览器遇见脚本标签的时候
就用引擎来执行;
<script language="VBscript">
<!--
...
...
..
-->
也就是说,如果想要使用脚本,则浏览器必须
有调用脚本引擎的能力;
那么我们可以说applet是脚本吗?
好像不是啊!

IE在一段时间里去掉了了对Java的支持;
因此Applet被人们遗忘了很久;pity;
Sun与MicroSoft的仇恨!!
后来Sun把执行applet的虚拟机做成浏览器的
插件,你在安装JDK的最后时刻一定看到了
Java(TM) plugin 安装到IE的提示;

浏览器总是试图纠正用户的错误标签而不是
报错;

再次说明基础:
init()被调用一次;
每次进入包含applet的页面就调用一次
start();
浏览器离开包含applet的页面时调用stop()
方法;
//这说明applet在没被看见的时候不运行的,
有效地节省了资源;
destroy()在浏览器关闭时销毁applet对象;
paint()在每次Applet的界面需要被画的时候被调用;
paint(Graphics g)中g描述了Applet界面的环境;

一个定时器的实现思想:
如果你的主线程程序强烈要求在特定的时间
间隔就做出某一个动作,那么如果你使用本线程
来睡眠的方法十分不合理:因为你的程序还希望做
别的更有意义的事情而不是只是每个一个时间段
就做那个机械的动作;所以我们可以用主线程来
启动一个线程,让这个副线程睡眠一个时间间隔后
回调主线程做出那个动作的方法;
而整个过程中主线程根本就不要任何地关注;
两种模式的区别:
一:
mainThread:
{
while(true)
{
Thread.sleep(400);
action();
}
}
二:
mainThread
{
sonThread=new Thread();
otheraction();
}
sonThread
{
while(true)
{
Thread.sleep();
mainThread.action();
}
}
因为applet是运行在客户端而资源在服务器
端,所以不要在你写的Applet里使用绝对路径
访问资源;而且一个applet可能被卖到多个不同的
服务器上使用;
有一个原则就是:applet源文件和资源的相对
路径不要改变;

Component.update(Graphics g)方法:
repaint()方法调用update()方法;
默认的系统实现的update()方法
先调用了调用了paint()方法;

最小化,最大化的暴光操作是直接
调用paint()方法的;
而调用repaint()方法则一定会
通过update()方法来调用paint()方法;
所以你有机会在覆盖update()方法,试图
不调用paint()方法;
*****关于paint(),repaint(),update()方法的一些 试验与解释:
*****paint(Graphics g)方法就是在组件上绘图;
*****repaint()方法做以下调用:
***** 调用update(Grpahics g)方法;
***** update(Graphics g)做以下调用:
***先调用clear()清除组件上已绘制图像;
***再调用paint(Graphics g)方法绘制图像;
***所以我们有这样一些试验:
如果你没有重写update()方法,则每次调用repaint()之后,
都可以在组件上重新绘制一副新图像;
如果你重写的update()方法什么都没做,则每次调用repaint()
方法后,你的组建上的图像不会变化;
如果你重写的update()方法只调用了paint(Graphics g)而没有
调用clear(),则每次调用repaint()之后,你的组件上的图像是重叠
了新旧图像的图像;
****注意:repaint()方法可以手动调用从而间接调用了paint(Graphics g)方法;
但是paint(Graphics g)是不能手动调用的;

****TMD面向对象就是牛!

Applet的相关知识:
WWW浏览器是applet运行的容器,或者你
就说是引擎吧!

applet是浏览器的插件;

注意:容器才是真正的应用程序,插件只是容器能够使用的
函数;这么一来,我们知道,其实服务器上的应用
程序是Tomcat而不是我们写的Servlet和JSP,
我们只是在给Tomcat写可以调用的插件而已;

servlet,EJB技术都是这种容器与插件的程序架构设计模式;

Applet的控制台输出:Java控制台;
控制台可以输出如同System.out.print()
之类的语句;

解释器一般有两个:
MicroSoft vm;
Sun Jre;
Applet的限制:
不能启动执行其他的应用程序;
不能进行文件I/O操作;
不能调用本机代码;
不能与Applet所在的主机之外的其他
主机进行网络连接;
解释:如果恶意的Web服务器提供给用户下载
applet,如果applet被下载到客户机上能够进行
I/O操作和启动别的程序,那客户上的信息有可能被
发送到Web服务器上,或者客户机会受到病毒感染;
提供Applet的服务器将applet下载到客户机上,
如果在客户机上applet能够与提供applet的服务器之外
的主机连接,进行恶意攻击,那这个主机查回来
之后发现的元凶是这个客户机而不是提供applet
的服务器;


<applet>标记
一个网页中可以有多个<applet>标记
<applet
[archive=archiveList] //预先要载入的资源,如.jar;
code=appletFile.class
width=pixels
height=pixels
[codebase=codebaseURL]
[alt=alternateText]
[name=appletInstanceName]//用于一个Applet调用另一个
[align=alignment] //applet,进行通信;
[vspace=pixels]
[hspace=pixels]
>
[<param name=appletAttribute 1 value=value>]
[<param name=appletAttribute 2 value=value>]
[apternameHTML]
</applet>

getParameter()的参数对大小写是不敏感的;
但是我们应该保持一致;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Spring简介(Rod Johnson)

下一篇:Oreilly的《Java 网络编程》学习笔记--java.applet.Applet的网络