《Java编程思想》读书笔记(3)

来源:互联网 发布:java状态机配置 编辑:程序博客网 时间:2024/05/21 22:48

    好了,上一次笔记中我写了第一个Applet程序,但还没有运行,对吗?恩,接下来就完成这个任务。先把代码编译成class文件,然后只要创建这样一个包含如下代码的hello.html文件就可以了:<applet code= TestApplet width=100 height=50></applet>,这样在IE浏览器里就可以直接运行了。或者你可以在dos命令行中用appletviewer hello.html来启动小应用程序查看器(AppletWiwer)运行这个applet

但是随后而来的浏览器和语言大战使我们(不仅是程序员,还包括最终用户)都成了输家。不久,Sun发现再也不能指望靠浏览器来支持风味醇正的Java了,唯一的解决方案是利用浏览器的扩展机制来提供"插件(add-on)"。通过这个办法(要想禁掉Java,除非把所有第三方的插件全都禁掉,但是为了获取竞争优势,没有一个浏览器的提供商会这么做的)Sun确保了Java不会被敌对的浏览器提供商给禁掉。汗,这一段,真是没看懂,究竟是怎么使java会被禁掉的?

对于Internet Explorer,这种扩展机制就是ActiveX的控件,而Netscape的则是plugin。(这就是AppletActiveX两者之间的联系吗?)你做页面时必须为这两个浏览器各写一套标记,不过JDK自带了一个能自动生成标记的HTMLconverter工具。

2.gif

下面就是我用HTMLconverter处理过的hello.html页面:

<html>
        <!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<object
    classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
    codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,5"
    WIDTH = 100 HEIGHT = 50 >
    <PARAM NAME = CODE VALUE = HelloTest >
    <param name = "type" value = "application/x-java-applet;version=1.5">
    <param name = "scriptable" value = "false">
 
    <comment>
        <embed
            type = "application/x-java-applet;version=1.5" /
            CODE = HelloTest /
            WIDTH = 100 /
            HEIGHT = 50
            scriptable = false
            pluginspage = "http://java.sun.com/products/plugin/index.html#download">
            <noembed>
            
            </noembed>
        </embed>
    </comment>
</object>
 
<!--
<APPLET CODE = HelloTest WIDTH = 100 HEIGHT = 50>
 
 
</APPLET>
-->
<!--"END_CONVERTED_APPLET"-->
 
</html>

code的值是applet所处的.class文件的名字,widthheight则表示applet的初始尺寸(和前面一样,以象素为单位)。此外applet标记里面还可以放一些东西:到哪里去找.class文件(codebase),怎样对齐(align)applet相互通讯的时候要用的标识符(name),以及提供给applet的参数。参数的格式是这样的:

<param name="identifier" value = "information">
你可以根据需要,加任意多个参数。

如果要在Web网站上测试applet,问题就有些复杂了。首先,你得先有一个网站。对绝大多数人来讲,网站就是第三方的ISP(Internet服务提供商)机器上的某个目录。由于applet只是几个文件,因此ISP不会提供特殊支持,所以你得自己想办法把HTML文件和.class文件传到指定的ISP的机器上的目录里。这一步通常是由FTP完成的。好在FTP的工具很多,有的是freeware,有的是shareware。由此看来,似乎在网站上测试applet,就是用FTP把文件传到ISP的机器上,然后再连到网站,用浏览器打开页面,等到applet跳出来就大功告成了。真的是这样吗?

这里就是会让你栽跟头的地方了。如果客户端的浏览器不能在服务器上找到.class文件,它会到客户机的CLASSPATH里面去找。这样一来,就有可能发生,浏览器在服务器上找不到.class文件,因此用你机器上的文件启动了applet的情形了。于是在你看来一切都很正常,而其他人则什么都看不见了。所以测试之前,一定要把本地的.class文件(.jar文件)全部删了,只有这样才能知道程序是不是呆在正确的服务器目录里。给applet标记的CODE参数赋值的时候,一定要给全名,这一点非常重要.