Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言功能的摘要,请参见Java语言变化。
有关所有JDK版本的新功能、增强功能和已删除或已弃用选项的信息,请参见JDK发行说明。
网页上的JavaScript代码可以与嵌入在页面上的Java小程序进行交互。JavaScript代码可以执行以下操作:
LiveConnect规范详细描述了JavaScript代码与Java代码之间的通信细节。
当JavaScript代码调用Java小程序时,会显示安全警告。为了抑制这些警告,需要在JAR文件清单中添加Caller-Allowable-Codebase
属性。指定允许调用小程序的JavaScript代码的位置。有关Caller-Allowable-Codebase
属性的信息,请参阅JAR文件清单属性安全。
本主题探讨了使用Math小程序示例的JavaScript代码到Java小程序的通信。 MathApplet
类和支持的Calculator
类提供一组公共方法和变量。网页上的JavaScript代码调用和评估这些公共成员以传递数据并检索计算结果。
这是
类的源代码。 MathApplet
getCalculator
方法返回Calculator
辅助类的引用。
package jstojava; import java.applet.Applet; public class MathApplet extends Applet{ public String userName = null; public String getGreeting() { return "你好 " + userName; } public Calculator getCalculator() { return new Calculator(); } public DateHelper getDateHelper() { return new DateHelper(); } public void printOut(String text) { System.out.println(text); } }
类中的方法允许用户设置两个值,添加数字,并在范围内检索数字。Calculator
package jstojava; public class Calculator { private int a = 0; private int b = 0; // 假设b > a public void setNums(int numA, int numB) { a = numA; b = numB; } public int add() { return a + b; } public int [] getNumInRange() { int x = a; int len = (b - a) + 1; int [] range = new int [len]; for (int i = 0; i < len; i++) { range[i]= x++; System.out.println("i: " + i + " ; range[i]: " + range[i]); } return range; } }
getDate
方法位于
类中,用于返回当前日期。DateHelper
package jstojava; import java.util.Date; import java.text.SimpleDateFormat; public class DateHelper { public static String label = null; public String getDate() { return label + " " + new SimpleDateFormat().format(new Date()); } }
将 applet 部署在一个网页中,
。在部署 applet 时,确保为 applet 指定一个 id。稍后会使用 applet id 来获取对 applet 对象的引用。AppletPage.html
<script src= "https://www.java.com/js/deployJava.js"></script> <script> <!-- applet id 可用于获取对 applet 对象的引用 --> var attributes = { id:'mathApplet', code:'jstojava.MathApplet', width:1, height:1} ; var parameters = { jnlp_href: 'math_applet.jnlp'} ; deployJava.runApplet(attributes, parameters, '1.6'); </script>
接下来,在
网页中添加一些 JavaScript 代码。JavaScript 代码可以使用 applet id 作为 applet 对象的引用,并调用 applet 的方法。在下面的示例中,JavaScript 代码设置了 applet 的公共成员变量,调用了公共方法,并获取了 applet 引用的另一个对象 (AppletPage.html
Calculator
) 的引用。JavaScript 代码可以处理原始类型、数组和对象的返回类型。
<script language="javascript"> function enterNums(){ var numA = prompt('输入数字 \'a\':','0'); var numB = prompt( '输入数字 \'b\'(应大于数字 \'a\'):','1'); // 设置 applet 的公共变量 mathApplet.userName = "John Doe"; // 调用公共 applet 方法 var greeting = mathApplet.getGreeting(); // 获取 applet 引用的另一个类并调用其方法 var calculator = mathApplet.getCalculator(); calculator.setNums(numA, numB); // applet 返回的原始数据类型 var sum = calculator.add(); // applet 返回的数组 var numRange = calculator.getNumInRange(); // 查看 Java 控制台日志以获取此消息 mathApplet.printOut("测试向 System.out 打印"); // 获取另一个类,设置静态字段并调用其方法 var dateHelper = mathApplet.getDateHelper(); dateHelper.label = "今天的日期是:"; var dateStr = dateHelper.getDate(); <!-- ... --> </script>
当数字a = 0和b = 5时,Math applet在网页上显示以下结果:
JavaScript到Java通信的结果 你好 John Doe a = 0 ; b = 5 和:5 范围数组中的数字:[ 0, 1, 2, 3, 4, 5 ] 今天的日期是:5/28/13 4:12 PM //显示当前日期
在浏览器中打开
以查看Math applet。AppletPage.html
查看由JavaScript代码调用的applet所施加的安全限制。
下载源代码以进一步进行实验。