在HTML中嵌入Java Applet,Applet、Object和Embed的应用

来源:互联网 发布:编程好书 编辑:程序博客网 时间:2024/05/19 13:20

   <applet>是老的標籤,ie可以自動解析,不用下載jre,但是java里不能用到新的類,如swing  
   <object>是新的標籤,需要下載jre,你可以提供下載軟件,這樣會比較快吧  
   至於不能運行問題,可能是沒有打包好所有該用到class,或者沒有安裝jre

 

     如何部署 applet 取决于客户访问网页的方式以及使用的浏览器类型。注意这一点以后,按以下步骤进行操作。
针对内网使用还是外网使用:如果网页是通过外网访问,使用 applet 标签;如果是内网,可以使用 object 或者 embed 标签。
针对不同的浏览器类型:object 标签只能支持 IE 浏览器;而 embed 标签只支持 Mozilla 浏览器。
如果您必须把 applet 部署在一个支持多种浏览器的环境中,请参阅本文后半部分:applet 在多浏览器环境下的部署。

使用 applet 标签
针对多浏览器环境,要使用 applet 标签。关于 applet 标签规范约束,请参阅 W3 网页标准。
注明:网页标准规定反对使用 applet 标签,建议用 object 标签替代。但是标准中关于浏览器如何支持 object 标签嵌入 applet 程序的说明是模糊的,而且浏览器产品对 object 标签的支持也很混乱。因此 sun 公司推荐还是使用 applet 标签把 applet 程序部署在各种平台下的浏览器中。
applet 标签使用示例:
view plaincopy to clipboardprint?
<applet code=Applet1.class width="200" height="200"> 
Your browser does not support the <code>applet</code> tag.  
</applet>  
    <applet code=Applet1.class width="200" height="200">
    Your browser does not support the <code>applet</code> tag.
    </applet> 
对于无论 IE 还是 Mozilla 系列的浏览器,如果已经安装了 java 插件,applet 就可以运行。
注:applet 标签不支持 jre 的自动安装。

使用 object 标签
object 标签仅仅支持 IE 浏览器用户。关于 object 标签规范约束,请参阅 W3 网页标准。
object 标签使用示例:
view plaincopy to clipboardprint?
<OBJECT   
  classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
  width="200" height="200"> 
  <PARAM name="code" value="Applet1.class"> 
</OBJECT> 
<OBJECT
  classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
  width="200" height="200">
  <PARAM name="code" value="Applet1.class">
</OBJECT>
classid 属性指定了使用的 Java 插件的版本。下面的代码是 classid 属性的一般用法。代码的作用是命令 IE 浏览器使用安装的最新版本的 Java 插件。

view plaincopy to clipboardprint?
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"  
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
 
可以使用下面代码替换 classid 值:
view plaincopy to clipboardprint?
classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA"  
classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA" 
其中,"xxxx", "yyyy", 以及 "zzzz" 是4个数字,用来指出要使用的 Java 插件的版本。比如,如果使用 Java 插件 1.5.0,可以这样定义:
view plaincopy to clipboardprint?
classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA"  
classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA" 
codebase 属性定义了如何下载 JRE。codebase 属性有两种写法:
view plaincopy to clipboardprint?
codebase=<URL> 
codebase=<URL>

view plaincopy to clipboardprint?
codebase=<URL>#Version=major,minor,micro,update 
codebase=<URL>#Version=major,minor,micro,update
第一种写法表示,如果 classid 中指定的 jre 没有安装,客户端会自动下载 URL 中指定的 JRE 下载地址。第二种写法表示,如果 codebase 中指定的 jre 版本高于 classid 属性指定的 jre 版本,客户端会立即根据给定的 URL 下载 JRE。下面代码示例中说明了如何使用 codebase 属性自动安装 sun 官网公布的 jre:
view plaincopy to clipboardprint?
<object   
  classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
  width="200" height="200" 
  codebase="
http://java.sun.com/products/plugin/autodl/  
           jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"> 
  <param name="code" value="Applet1.class"> 
</object> 
<object
  classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
  width="200" height="200"
  codebase="
http://java.sun.com/products/plugin/autodl/
           jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0">
  <param name="code" value="Applet1.class">
</object>
注明:codebase=http://java.sun.com ... 一行中的内容,为了可读性考虑被分为两行,实际中必须显示在一整行中。sun 公司提供每个版本的 jre 下载。

使用 embed 标签
使用 embed 标签仅仅可以把 applet 应用程序部署到 Mozilla 系列的浏览器中。embed 标签使用示例:
view plaincopy to clipboardprint?
<embed code="Applet1.class" 
  width="200" height="200" 
  type="application/x-java-applet;version=1.5.0" 
  pluginspage="
http://java.sun.com/j2se/1.5.0/download.html"/
<embed code="Applet1.class"
  width="200" height="200"
  type="application/x-java-applet;version=1.5.0"
  pluginspage="
http://java.sun.com/j2se/1.5.0/download.html"/>
type 属性可以有两种写法:
type="application/x-java-applet;version=1.5.0"

type="application/x-java-applet;jpi-version=1.5.0_01
使用第一种写法中,指明了使用本标签要求的最低版本的 MIME 类型:application/x-java-applet;version=1.5.0 。如果 JRE 版本号不低于指定的版本,就可以使用。否则客户端会自动跳转到 pluginspage 属性指定的 URL 地址。第二种写法中,客户端安装的 JRE 必须是给定的 jpi-version (本例中是 1.5.0_01 ),否则客户端会直接跳转到 pluginspage 属性指定的 URL 地址页面。


applet 应用程序在多浏览器环境中的部署。
可以通过纯 HTML 或者 JavaScript 可以把 applet 程序部署在无论是 IE 还是 Mozilla 系列浏览器中。
使用纯 HTML
部署 applet 到多浏览器环境时注意,IE 浏览器要能识别 object 标签,而且要忽视 comment 标签;而 Mozilla 系列浏览器要能忽略带有 classid 属性的 object 标签,要能解释 comment 标签的内容。示例:
view plaincopy to clipboardprint?
<object   
  classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA" 
  <param name="code" value="Applet1.class"> 
    <comment> 
      <embed code="Applet1.class" 
        type="application/x-java-applet;jpi-version=1.5.0"> 
        <noembed> 
          No Java Support.  
        </noembed> 
      </embed> 
    </comment> 
  </object> 
<object
  classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA"
  <param name="code" value="Applet1.class">
    <comment>
      <embed code="Applet1.class"
        type="application/x-java-applet;jpi-version=1.5.0">
        <noembed>
          No Java Support.
        </noembed>
      </embed>
    </comment>
  </object>
使用 JavaScript
使用 JavaScript 可以通过 appName 参数得知客户端浏览器类型;可以根据 appName 参数使用 document.write() 方法进行适配:a,如果浏览器名字是“Netscape” ,写 embed 标签;b.如果浏览器名字是“Microsoft Internet Explorer”,就写 object 标签。代码示例:
view plaincopy to clipboardprint?
<html> 
<mce:script language="Javascript"><!--  
  var _app = navigator.appName;  
 
  if (_app == 'Netscape') {  
    document.write('<embed code="Applet1.class"',  
                   'width="200"',  
                   'height="200"',  
                   'type="application/x-java-applet;version=1.5.0">');  
    }  
  else if (_app == 'Microsoft Internet Explorer') {  
    document.write('<OBJECT ',  
                   'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"',  
                   'width="200"',  
                   'height="200">',  
                   '<PARAM name="code" value="Applet1.class">',  
                   '</OBJECT>');  
    }  
  else {  
    document.write('<p>Sorry, unsupported browser.</p>');  
    }  
// --></mce:script> 
</html> 
<html>
<mce:script language="Javascript"><!--
  var _app = navigator.appName;

  if (_app == 'Netscape') {
    document.write('<embed code="Applet1.class"',
                   'width="200"',
                   'height="200"',
                   'type="application/x-java-applet;version=1.5.0">');
    }
  else if (_app == 'Microsoft Internet Explorer') {
    document.write('<OBJECT ',
                   'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"',
                   'width="200"',
                   'height="200">',
                   '<PARAM name="code" value="Applet1.class">',
                   '</OBJECT>');
    }
  else {
    document.write('<p>Sorry, unsupported browser.</p>');
    }
// --></mce:script>
</html>
 

当然,读者也可以使用 HTML Converter 工具为适应多浏览器环境进行 object 标签与 embed 标签之间的转换。