快速业务通道

在JavaScript程序中整合Java函数 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22

在JavaScript程序中整合Java函数

时间:2010-12-25

问题的提出:

假定我们的HTML 页中有一些表单需要处理,并且我们需要初始化数据库中的字段,我们该怎么办?标准的解决办法就是使用CGI脚本或是使用Java Servlet等服务器端程序,但是你有没有想过,还可以编写一个脚本程序使你可以用JavaScript直接调用服务器端Java程序进行任何计算的结果,就像下面代码中列的那样:

<html> 我们的表单<br> <form> <input type="text" name="textField"><br> <input type="button" value="Click" onClick="updateField();"> </form> <script> function updateField() { document.forms[0].textField.value=java.dbConnection.getData(''SQL_expr''); } </script> </html>

所以,当用户点击按钮,该程序就会调用Java的dbConnection类,然后就可以在JavaScript应用程序中使用Java返回的结果了。上面的程序只是更新了textField的值,我们不必刷新整个页面。由于这个程序也不是JSP文件,所以不必把你的页面编译成Java Servlet。

你还可以使用调用某些Java函数返回的结果替代段落中的文字;在一个非常大的HTML表中,你可以使用同样的方法,只要更新一行信息:

<script language="JavaScript"> function changeCol() { document.all.quote.rows[0].cells[1].innerText=java.Stock.getQuote(''Wayne''); } </script> <table id="quote" border=1> <tr><td>Wayne</td><td>123</td></tr> <tr><td>Another one</td><td>34</td></tr> </table>

怎么样,能够直接在JavaScript中嵌入Java对象的调用,而且可以保证你的页面的其它部分不会被改变,你一定对这个问题比较感兴趣吧。好吧,现在就让我们用Java Servlet来实现它吧。

工作原理

我的构思是使用Java Servlet编写一个JinJ(Java in JavaScript)程序,能够让 HTML 页面内整合 Java 类和 JavaScript脚本,将所有使用JavaScript调用Java函数的HTML页面都传送到这个Servlet中处理,JinJ将即时产生带有Java applet的隐藏帧,这个applet起着桥梁的作用,用来和Java通讯,它的大小还不到2KB,为了调用对象,Applet使用HTTP连接同一个JinJ Servlet。JinJ用相应的JavaScript结构来替换所有的Java调用(其实每一个调用前都有前缀java),并且保持页面的其它部分不变。所以,为了能够让JinJ正确识别,你的JavaScript代码中的任何Java调用,都要使用如下的结构: java.object_name.function_name(list_of_parameters) 其中:

java:是一个标准的前缀:

object_name:是一个变量名,保存某些Java类的实例(在后面,我们会详细的探讨如何创建/定义这样的变量),比如说它可以是一个类名。

function_name:是一个Java类的函数名。

list_of_parameters:是调用的函数的参数列表(可以为空)。

下面也将会探讨如何把参数传给Java,每个参数显然是某个JavaScript表达式。你也可以使用预编译页,换句话说就是在使用HTML页面之前编译它。

在JavaScript程序中整合Java函数(2)

时间:2010-12-25

服务器实现

在谈编程之前我还想说一说JinJ的服务器实现。在你的服务器中需要两个组成部分:JINJ servlet和bridge applet.。你所有需要被整合的HTML页面都是被JinJ servlet预处理,你可以通过以下方法实现:

a)把你的页面当作一个参数传递给JinJ servlet

所以你可以把你HTML页中如下的超链接<a href="mypage.html">我的页面</a>改为:&

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号