使用插件下载JRE
如果客户端游览器还未安装JRE或已安装的JRE版本低于你Applet的要求,或浏览器自带的JRE不是Sun公司标准的Applet,你Applet都可能无法正常运行。可以通过JDK自带的HtmlConverter.exe工具对带Applet的HTML文件进行转换,转换后的文件可以指定浏览器在运行Applet时将特定版本的JRE以插件的方式下载并安装,就象带Flash插件或SVG插件一样。
我们先从game工程根目录的classes目录下,拷贝TypeTrainApplet.html到game工程根目录下,以使其和game.jar位于同一个目录。
HtmlConverter.exe工具位于JDK的bin目录下,我们使用JDK5.0下的,导航到JDK5.0所安装的bin目录中,双击HtmlConverter.exe,稍等片刻,将弹出如下的对话框:
 图 23 HTML转换工具 | 1.点击"指定文件或目录路径"后的"浏览…"按钮,选择工程目录下的TypeTrainApplet.html。
2."将文件备份到文件夹"指定了将未转换前的TypeTrainApplet.html文件备份到的目录。
3.在"模板文件"中设置转换模板,根据你客户端用户所在的平台和使用的浏览器选择相应的选项。这里我们选择"只适用Windows和Solaris的标准组件(IE和Navigator)"。
4.点选"使用任何Java1.5,或更高版本",这样Java plug-in插件将使用JER1.5版本,这样将使用JRE1.5系统最新的版本,如果选择"JRE1.5.0"将保持插件版本不变,则不会去更新。
5.点击"转换(C)…"开始转换,原始的TypeTrainApplet.html被备份到备份文件夹下,在原位置的TypeTrainApplet.html已经被转换的结果覆盖。
提示:
如果你想使用JRE1.4或JRE1.3作为插件,则需要使用JDK1.4或JDK1.3所带的转换器进行转换。
打开转换后的TypeTrainApplet.html文件内容如下所示:
代码清单 11 转换后的TypeTrainApplet.html
1. <html> 2. <head> 3. <meta http-equiv="Content-Type" content="text/html; charset=GBK"> 4. <title>HTML Test Page</title> 5. </head> 6. <body>game.TypeTrainApplet will appear below in a Java enabled browser. 7. <br> 8. <!--"CONVERTED_APPLET"--> 9. <!-- HTML CONVERTER --> 10. <object 11. classid = "clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA" 12. codebase = 13. "http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0" 14. WIDTH = "400" HEIGHT = "400" NAME = "TestApplet" ALIGN = "middle" VSPACE = 15. "0" HSPACE = "0" > 16. <PARAM NAME = CODE VALUE = "game.TypeTrainApplet.class" > 17. <PARAM NAME = CODEBASE VALUE = "." > 18. <PARAM NAME = ARCHIVE VALUE = "game.JAR" > 19. <PARAM NAME = NAME VALUE = "TestApplet" > 20. <param name = "type" value = "application/x-java-applet;jpi-version=1.5"> 21. <param name = "scriptable" value = "false"> 22. <PARAM NAME = "stepLen" VALUE="2"> 23. <PARAM NAME = "stepInterval" VALUE="50"> 24. <PARAM NAME = "columnCount" VALUE="10"> 25. <PARAM NAME = "generateInterval" VALUE="500"> 26. 27. <comment> 28. <embed 29. type = "application/x-java-applet;jpi-version=1.5" \ 30. CODE = "game.TypeTrainApplet.class" \ 31. JAVA_CODEBASE = "." \ 32. ARCHIVE = "game.JAR" \ 33. NAME = "TestApplet" \ 34. WIDTH = "400" \ 35. HEIGHT = "400" \ 36. ALIGN = "middle" \ 37. VSPACE = "0" \ 38. HSPACE = "0" \ 39. stepLen ="2" \ 40. stepInterval ="50" \ 41. columnCount ="10" \ 42. generateInterval ="500" 43. scriptable = false 44. pluginspage = "http://java.sun.com/products/plugin/index.html#download"> 45. <noembed> 46. 47. </noembed> 48. </embed> 49. </comment> 50. </object> 51. 52. <!-- 53. <APPLET CODE = "game.TypeTrainApplet.class" JAVA_CODEBASE = "." ARCHIVE 54. = "game.JAR" WIDTH = "400" HEIGHT = "400" NAME = "TestApplet" ALIGN = 55. "middle" VSPACE = "0" HSPACE = "0"> 56. <PARAM NAME = "stepLen" VALUE="2"> 57. <PARAM NAME = "stepInterval" VALUE="50"> 58. <PARAM NAME = "columnCount" VALUE="10"> 59. <PARAM NAME = "generateInterval" VALUE="500"> 60. </APPLET> 61. --> 62. <!--"END_CONVERTED_APPLET"--> 63. </body> 64. </html> | 第13行指定了下载JRE插件的地址,如果没有安装这样的版本,将自动下载当前 JRE 1.5 系列的缺省下载版本,如果不能自动安装,则将用户引导到下载页面中,用户可以手工下载JRE,下载页面在第44行指定。
如果你的Applet最终部署在一个Web服务器中,且Web服务器位于局域网中,则你事先可以将JRE1.5.0下载下来,放置到Web服务器的上下文中,并更改第13行和第44行的路径。
提示:
将jinstall-1_5_0-windows-i586.cab下载并放置到自己的Web服务器中,相应更改<object>的codebase属性值,并不会成功自动安装JRE1.5.0,因为jinstall-1_5_0-windows-i586.cab并未包含JRE1.5.0的安装程序,而是通过cab文件中的jinstall-1_5_0.inf文件声明根据http://java.sun.com/update/1.5.0/1.5.0-b64.xml的配置信息,从Sun网站下载后安装。如果你Web服务器所在的局域网不能直接访问Sun网站,安装过程将无法安成。你需要更改cab文件中的jinstall-1_5_0.inf文件,下载并更改1.5.0-b64.xml配置文件才可以使局域网的客户端到你自己的Web服务器指定地址下载。
如果Applet是在jsp而非html文件中调用,则可以使用<jsp:plugin>标签来引用applet,以使applet以插件方式引用JRE。关于<jsp:plugin>的使用方法,请查看jsp相关书籍。
总结
我们讲述了如何在JBuilder开发一个简单的Applet指法练习游戏程序的过程,虽然这个游戏在功能上属于不敢见公婆型,但它涵盖了Applet开发的大部分内容和技巧。我们特在Applet中设置了一个不安全的功能:在客户机器中保存文件,浏览器事先毫不留情地阻截了它,尔后我们通过数字签名技术晓之以情,动之以理"说服"了浏览器取消安全限制。
大千世界,纷繁复杂,客户端浏览器的JRE版本和厂家百家争鸣,百花齐放,为了使我们的Applet能够在Sun标准的JRE1.5.0的版本上运行,我们动用了JDK自带的转换器对原html进行转换,这样标准的JER1.5.0将作为插件的形式下载并安装以支持这个难伺候Applet。
|
|