转自http://blog.csdn.net/snipps/article/details/5524868
上一遍文章简要的说明了什么是Java Plug-in,那么这一篇我们就来就applet的使用方法进行一个详细的讨论:
虽然w3c不推荐使用applet,但用applet在企业内部网(Intranet)中进行applet的部署是一个推荐的常用做法,那么就先来讨论一下<applet>标签的使用。
<applet>的使用
再早期进行applet的部署,用<applet>标签是一种很常见的做法,applet标签所有的属性列表,你可以在这里找到,http://www.w3schools.com/tags/tag_applet.asp,里面进行了详细的说明。
1.下面给一个使用applet的例子:
<applet code=Applet1.class width="200" height="200">
Your browser does not support the <code>applet</code> tag.
</applet>
一般我们主要使用的就是这几个属性:
code属性指的是applet类,也就是继承与java.applet.Applet或java.swing.JApplet类的子类,此属性值一定要为你存放applet类的路径;
width属性指的是你的applet在浏览器中所要占用的宽度
height属性指的是你的applet在浏览器中所要占用的高度
2.一般我们使用的就这几个属性,但有时我们将applet打包到了jar文件中,这时我们就要使用archive属性了,比如:
<applet code=package.Applet1.class archive="app.jar" width="200" height="200">
Your browser does not support the <code>applet</code> tag.
</applet>
这个实例的意思,就为在你存放html文件的文件中的app.jar文件中查找package.Applet1.class这个applet类,如果你想要使用多个jar文件,在archive的属性值中以英文编码逗号分隔jar文件,即可。
3.有时我们可能我们想加载的文件不再当前目录,而在其子目录,或者上级目录,这是我们就可以使用codebase属性,例如:
<applet code=Applet1.class codebase="app" width="200" height="200">
Your browser does not support the <code>applet</code> tag.
</applet>
这样Java plug-in就会在当前目录下的app子目录中查找,加载Applet1.class类。
4.我们也可以通过其向applet类中传递参数,比如:
<applet code=Applet1.class codebase="app" width="200" height="200">
<param name="param1" value="1"/>
<param name="param2" value="2"/>
Your browser does not support the <code>applet</code> tag.
</applet>
这样,我们就可以在我们写的applet通过getParameter(String param)方法得到这些参数,使得我们可以在applet标签中就可以配置程序的目的,而传入的参数名,就是我们在param标签的name属性值。
<object>使用
使用object标签,通常只在Internet explorer中使用,例如:
<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>
属性介绍:
1.classid属性表示要使用的最小Java plug-in版本号,这就表示当前安装的Java plug-in的版本必须大于classid,否则此applet运行不了。通常在Internet Explorer中使用的classid属性值是固定的,即:
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
此种格式表示使用IE中最新的jre版本。
classid也有另外的一种格式,如下:
classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA"
xxxx-yyyy-zzzz为Java plug-in的版本号,如1.6.0版本,就可以表示为:
classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA"
2.width,height属性与applet一样,这里就不介绍了
3.codebase为可选属性,它有以下作用:
在本机安装的JRE(Java Runtime Environment)的版本小于classid属性指定的版本,浏览器则到此url中下载安装jre。
codebase的有如下格式:
codebase=<URL>
此种格式,表是如果本地安装的jre版本不为classid指定的版本,则转到指定的url,进行下载,安装
codebase=<URL>#Version=major,minor,micro,undate
此种格式,如果本机安装的jre版本比classid中指定的小,则到指定的url中下载jre
注意:这里是用英文逗号分隔的。
这里用Sun公司专门为Windows平台下的安装文件各个版本下载文件(.cab格式),http://java.sun.com/javase/6/webnotes/install/jre/autodownload.html。
<embed>标签
使用embed标签,通常在Mozilla系列浏览器中使用,如下:
<embed code="Applet1.class"
width="200" height="200"
type="application/x-java-applet;version=1.6"
pluginspage="http://java.sun.com/javase/downloads/ea.jsp"/>
属性介绍:
1.code,width,height属性于applet标签中的属性相同,这里就不介绍了
2.type属性有如下格式:
type="application/x-java-applet;version=1.6"
此种格式,表示支持MIME类型为application/x-java-applet,版本为1.6或更高的被调用,如果本地安装的jre比version中指定的大或等于,则调用此jre,否则指向pluginspage属性指定的url。
type="application/x-java-applet;jpi-version=1.5.0_07
此种格式,表示本地运行的jre版本必须大于或等于1.5.0_07,否则指向pluginspage的url
<jsp:plugin/>标签的使用
<jsp:plugin type=applet code="Molecule" codebase="/html" >
<jsp:params>
<jsp:param name="molecule" value="molecules/benzene.mol"/>
</jsp:params>
<jsp:fallback>
<p> Unable to start Plug-in. </p>
</jsp:fallback>
</jsp:plugin>
<jsp:plugin>为applet的根标签,我们在jsp页面中的applet所做的动作都在这其中进行
<jsp:param>与applet标签中的<param>相同
<jsp:params>用于包裹多个<jsp:param>标签
<jsp:fallback>用于Java Plug-in启动失败,执行其中的内容,一般顺利执行,则会被忽略
另外一些技术帮助
如何在一个让一个applet能够运行在不同的浏览器中?
有三种办法?
1.使用applet标签
applet标签被大多数的主流浏览器所支持。
2.使用html标签
<object
classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA"
<param name="code" value="Applet1.class">
<comment>
<embed code="Applet1.class"
type="application/x-java-applet;jpi-version=1.6">
<noembed>
No Java Support.
</noembed>
</embed>
</comment>
</object>
在IE中,IE会识别Object标签,忽略comment签
在Mozilla浏览器中,Mozilla会忽略object,classid,可以识别comment标签
3.使用javascript
<html>
<script language="Javascript">
var _app = navigator.appName;
if (_app == 'Mozilla') {
document.write('<embed code="Applet1.class"',
'width="200"',
'height="200"',
'type="application/x-java-applet;version=1.6">');
}
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>');
}
</script>
</html>
确定自己浏览器的javascript解释器被打开了,在JavaScript中我们可以用appName变量名来取得浏览器的名字,如果
为Mozilla,我们就让JavaScript写出与Mozilla相关的html代码,如果为Microsoft Internet Explorer,就写出与IE相关的html代码。