在JavaScript中使用Java

【安卓】zoo for zotero && WebDAV 自动同步论文笔记 在安卓设别上,使用zoo for zotero && webdav完成自动同步论文笔记的功能 阅读详情

12.3 在JavaScript中使用Java

利用JavaScript可以把Java语言的小应用程序(applet),插件以及包括表单、超
级链接和图象在内的各种Web元素有机地联系起来。

JavaScript用一个叫做applets的applet对象数组来访问Java的applet。applets数
组是浏览器对象document的一个属性。这个数组中的每一个applet对象都按照它们
在HTML源代码中出现的顺序排列,下标值从0开始。

<applet code="Blink.class" name="Blink" width=300 height=100>

则相应的JavaScript语言中的applet对象既可以使用类似document.applets[0]形
式表示,也可以使用document.Blink来访问,Blink是这个小应用程序的名称。

有一种特殊的情况,在JavaScript中不能通过网络访问Java的属性,也就是说
JavaScript只能调用本地的Java小应用程序中的各种公用变量和属性。这样的设计
是为了保障Java的安全性。

除了可以在JavaScript中访问Java的小应用程序以外,还可以利用JavaScript访问
Java包名字空间的任何一个类。Java语言中提到的类(class)的概念同
JavaScript中的对象概念是一致的。

提示:Java中的各种对象被组织成类,类又被组织成包,包中的子类从它的基类中
继承属性和方法,并加以扩充和改变。

任何一个Java中的类都可以使用一个简单的语法对应一个JavaScript中的对象。例
如:
var javaSystem=Java.lang.System;

则JavaScript中的对象javaSystem就对应Java语言中的Java.lang.System对象,从
而直接在JavaScript中访问Java.lang.System中的各种方法和属性。例如可以在
JavaScript中使用
javaSystem.err.println("从JavaScript中调用Java!!");
来利用Java的方法输出一个字符串。

除了可以直接使用Java提供的类以外,还可以在JavaScript中动态地创建一个Java
类的实例,就好象这个类是JavaScript本身定义的一样。例如可以在JavaScript中
创建一个Java中的Date类:
var myNewDate=new Java.util.Date();
这样创建的myNewDate对象就可以访问所有Java类Date的数据。

通过使用JavaScript的这些直接访问Java类库的功能,就可以大大地扩展
JavaScript的使用范围,使它不再局限在狭小的范围之内,而可以拥有Java语言能
够实现的大多数功能,例如网络访问和复杂的窗口响应等。

例:一个小应用程序
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Font;

public class ControlJava extends Applet {
Font f=new Font("TimesRoman",Font.BOLD,60);
String Text;

public void init() {
Text=new String("这是一个Java的小应用程序,可以在JavaScript中控制。");
}

public void SetText(String newText) {
Text=newText;
repaint();
}

public void paint(Graphics g) {
g.setFont(f);
g.drawString(Text,15,50);
}
}

这个小应用程序提供一个叫做SetText()的公共方法,这个方法可以设置这个小应
用程序所显示的文字,下面在JavaScript中使用这个方法来控制Java小应用程序的
输入。

例:
<html>
<body>
<form name="JavaScriptForm">
<input type="Text" name="text1">
<input type="Button" value="出现在Java小应用程序中"
onClick="document.Java1.SetNewText(document.JavaScriptForm.text1.value);
">
</form>

<applet name="Java1" code="ControlJava.class" width=450 height=125>
</applet>
</body>
</html>

只要在网页中输入一个字符串,JavaScript就负责接受这个字符串。由于Java小应
用程序提供一个公共的接口方法SetNewText(),这个新输入的字符串也就可以被
Java小应用程序所访问到。

Java语言还允许从applet中直接调用JavaScript的方法和访问JavaScript对象的属
性。

由于Java语言本身的安全机制,必须显式地指定让applet访问相对较不安全的
JavaScript代码,这可以通过在<applet>标记中加上MAYSCRIPT属性来实现。例
如:
<applet code="some.class" width=java Applet" mayscript>

在Java语言中处理和JavaScript通信的类库是netscape.javaScript.*。这个包定
义了JSObject类和JSException对象。在JavaScript中使用的对象都可以表示成
netscape.javaScript.JSObject的实例。

在Java中准备这个包后,访问一个JavaScript对象的属性可以分两步进行:
创建一个netscape.javaScript.JSObject实例,用来对应JavaScript中的对象;
使用JSObject类的getMember()方法可以访问相应JavaScript中的属性。

提示:如果通过这样的getMember()方法得到的JavaScript属性是一个对象,这样
的操作还可以进行下去。

JavaScript中的各种浏览器和界面对象都是分层的。处于对象从属表最顶层的是浏
览器对象window,再下面是document对象,这个对象可以包容表单以及表单中的界
面对象。每一个下层对象是上层对象的一个属性。所以,按照刚才的方法,可以采
用如下的代码得到JavaScript语言中的一个界面对象:
JSObject windowHandle=JSObject.getWindow(this);
JSObject documentHandle=(JSObject) windowHandle.getMember("document");
JSObject formHandle=(JSObject) documentHandle.getMember("myform");
JSObject buttonHandle=(JSObject) formHandle.getMember("mybutton");
在得到这个JavaScript对象后,就可以获得或设定对象的属性。

为了调用JavaScript对象的有关方法,可以采用下面的两种方法之一:
使用JSObject类中的call("methodName",arguments)方法:这个Java方法接受一个
JavaScript对象的方法名称以及必要的参数,自动调用对应JavaScript的对象中的
方法。
使用JSObject类中的eval("expression")方法:这个Java方法接受一个字符串,这
个字符串由JavaScript的命令组成,这个方法自动执行这个字符串中的命令,就好
象这个命令是在JavaScript中的一样。

例:Java程序在代码中访问JavaScript中的window对象的alert()方法
import netscape.javascript.JSObject;
import netscape.javascript.JSException;

public class jsAlert extends java.applet.Applet implements Runnable {
JSObject windowObject;

public void init() {
windowObject=JSObject.getWindow(this);
}

public void main() {
windowObject.eval("alert(/"Hello, World!/");");
}

public void stop()
{}

public void paint()
{}

public void run()
{}
}

12.4 JavaScript的局限性以及未来的展望

这里说的局限性首先是指JavaScript在安全处理上的局限性,其次是指JavaScript
在功能上的局限性。

已经报告的JavaScript安全性缺陷主要有:
JavaScript脚本程序可以读取用户计算机上URL的历史信息,并在用户不知道的情
况下把这些信息发送到远方的服务器上。
JavaScript脚本程序可以得到用户计算机硬盘上的文件列表。
JavaScript脚本程序可以在用户不知道的情况下使用用户的E-mail帐号发送
E-mail。

由于JavaScript只能在浏览器的小空间中运行,所以除了特别重要的场所以外,一
般使用的用户不必太担心浏览网页中的JavaScript程序会给用户计算机带来怎样的
损失,至少JavaScript程序不能越过浏览器的限制而强行把用户的硬盘格式化掉。
上面提到的一些小的安全性隐患也会在将来的JavaScript发布版本中逐步予以清
除。

JavaScript的第二个局限性体现在功能上:
由于JavaScript只是一种脚本设计语言,在图形和多媒体处理方面的功能非常弱。
若想实现比较完整的媒体操纵功能,目前比较好的解决方法可能是利用Java小应用
程序来补充。
JavaScript是解释执行的,所以执行的速度非常慢,这是所有脚本语言的通病。


 

postgresql 数据库 timescaledb 函数time_bucket_gapfill()报错解决及更换 license 最近在工作中使用postgresql 和 timescaledb 的time_bucket_gapfill()函数 报错,让更换license,在网上找了一大圈,没有找到,最后解决了这个问题,这篇文章记录我的解决办法查看timescaledb.license参数命令:show timescaledb.license;修改命令: 结果不行,报错如下:lter system set timescaledb.license=‘timescale’;那只能换包了如果出现上面那种情况,那我们只能先从官网上下载带 ' 阅读详情

相关推荐

欧姆龙SYSMAC STUDIO如何与基恩士SR-1000进行EIP通信

简要介绍一下扫码枪和欧姆龙sysmac的配置

weixin_42031602的博客 4560

性别选择的java代码,按照性别选怀孕月份示例代码

package api.binstd.snsn;import java.net.URLEncoder;import api.util.HttpUtil;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class Month {public static final String APPKEY = "your_app...

weixin_30421223的博客 4866

信息学奥赛课课通(C++)配套资料(包括电子课件PPT、习题答案、习题参考代码、测试数据)

信息学奥赛课课通(C++)配套资料完整版(配套资源包括电子课件PPT、习题答案、习题参考代码、测试数据4部分)

JavaScriptJava的姐妹情缘

      JavaScriptJava的名字很相似,一开始我以为JavaScriptJava衍生出来的一种语言,是母与子的关系;后来我又以为他们是姐妹的关系,反正无论如何总会有关系的吧。      但真相却是JavaScriptJava是没有任何血缘关系的,那为什么他们的名字如此相似呢?原来java是由Sun 公司于1995年5月推出的,而javascript是于1995年由Netsca...

吴小爷 6万+

java计算机毕业设计基于springboo+vue的准妈妈孕期育儿婴幼儿交流平台

随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,准妈妈孕期交流平台当然也不能排除在外。准妈妈孕期交流平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用springboot框架构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;...

z459382737的博客 1万+

JAVA 实现预产期计算器

一天,有人问我,大师,怀孕32周是几个月呢?  答:7个月零两个星期,

大师的资源 5184

关于Java的常识与误解,JavaScriptJava是一个妈生的吗?

Java核心技术,特性、误解。

不负时光可怜人 1万+

如何进入Docker容器

概述 在使用Docker创建了容器之后,大家

二当家的 26万+

几个进程同步问题

1.消费者-生产者 semaphore empty = n; // 空闲缓冲区数量 semaphore full = 0; // 产品数量 semaphore mutex = 1; // 对缓冲区的互斥操作 void producer(){ do{ 生产一个产品; wait(empty); wait(mutex); // 实现互斥的P操作...

qq_41342326的博客 1244

游戏的帧同步

原链接:http://www.sohu.com/a/153269736_163917 这是王者荣耀技术分析系列第二篇,有兴趣请持续关注。 1、 2、从《王者荣耀》来聊聊游戏的帧同步 3、游戏服务器的架构演进 农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示,《王者荣耀》渗透率达到22.3%,用户规模达到2.01亿人,每日的日活跃用户(DAU)均值为5412.8万人。 如此可观的数据,令人十分钦佩。 当然,作为技术人,更愿意从技术上了

weixin_42565127的博客 1781

visualSvn Server同步代码报错问题

遇到这个问题,百度N遍,出现的问题也很奇怪,不使用post-commit.bat文件进行同步时,更新提交都没问题,使用了就每次提交代码都提示文件被锁定了 后面我直接把post-commit.bat文件内容改为 cd C:\phpstudy_pro\WWW\cdglycode svn update 第一段代码进入你要更新的文件目录,第二段代码更新SVN,直接这样使用就行了 至于其他的教程,搜索一下就有了,这里有个比较搭建svn服务端详细教程的链接,有兴趣的可以进去看看https://blog..

qq_30916811的博客 281

老婆写的计算怀孕周的程序

import java.awt.Dimension; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.W...

coolboyysy的专栏 1443

javascriptjava基础知识

简单学些了JavaScriptJava的基础的知识,进行了简单的总结。JavaScript 1、基本语法 (1)注释 (2)输入与输出 (3)变量规范 a.包含0-9字母$_ b.不能以数字开头 c.尽量保证变量名有语义 (4)运算符 算术运算符、赋值、逻辑、关系、自增自减 2、控制结构 分支:if else,switch 循环:while...

IT女孩儿的日常的博客 4575

java 孕周计算器_周期表孕期计算器

原标题:周期表孕期计算器怀孕(或称妊娠、有身),是指哺乳类雌性(包括人类)在体内有一个或多个胎儿或胚胎。人类的妊娠是哺乳动物中研究最详细的。人类的妊娠从最后一次月经到分娩持续大约40个星期(从排卵算起是38周),分娩是生产的术语。许多社会以及法律将妊娠分为三期。怀孕初期有很高的流产机率;中期开始胎儿就发展到可以跟踪监测;后期胎儿就开始有母体外存活能力,由于这个能力,许多法律和习俗就视这时期的胎儿为...

weixin_32524219的博客 1710

JavaScriptJava有何关系

3、它们的执行方式也是不一样的,Java是介于解释型和编译型语言之间的一种语言java的源代码在传递到客户端执行之前,必须经过编译,通过相应平台上的解释器,实现独立于某个特定的平台编译代码的束缚。1、javaJavaScript没有任何的血缘关系,java是是由Sun 公司于1995年5月推出的,而javascript是于1995年由Netscape公司设计实现而成的,由于Netscape公司与Sun公司合作,Netscape高层希望它看上去能够像Java,因此取名为JavaScript

hdxx2022的博客 2898

浅谈JavaScriptJava有什么关系

转自:微点阅读http://www.weidianyuedu.com/ 很多人看到JavaScriptJava这两种编程语言,就会自然而然地想知道这两者究竟有什么关系。 其实,这两者也是有一毛钱的关系的,不能说完全没有关系。 JavaScript最初的确是受Java启发而开始设计的,而且设计的目的之一就是“看上去像Java”,因此语法上有很多类似之处,很多名称和命名规则也借自Java。但是实际上,JavaScript主要设计原则源自Self和Scheme。 JavaScriptJava虽然.

asd3331380的博客 1万+

JavaScript

JavaScript全面解析带有例题代码

一枚数学专业的小码农的博客 806

js 操作java对象_JavaScript操作java对象

JavaScript操作Java对象的实现:代码片段1(获取脚本引擎):import java.util.List;import javax.script.ScriptEngine;import javax.script.ScriptEngineFactory;import javax.script.ScriptEngineManager;import javax.script.ScriptExc...

weixin_39915668的博客 5009

javascript java 语法_JavaScript

Day09_javaScript基础0.1学习目标1、能够掌握js基本语法2、能够掌握js的基本数据类型3、能够掌握js常用的对象0.2学习指南Js基本语法(重要)Js基本数据类型(重要)Js常用对象(重点)第一堂课本节知识点1、今日内容2、JavaScript_简介3、JavaScript_发展史4、JavaScript_语法_与html结合方式本节目标js的概述和发展史今日内容...

weixin_36029647的博客 498

谈谈JavaScriptJava

刚接触JavaScript时,还认为JavaScriptJava有什么联系。其实呢,JavaScriptJava没有一点联系,真要说有什么关系就是老婆和老婆饼的关系吧。下面介绍一下他们有什么不同。 JavaScript Java 语言类型 弱语言类型 强语言类型 声明变量 声明变量不用规定类型,类型由内容决定,使用时可以为变量赋不同类型值...

进阶的阿毛 2万+

js计算怀孕周期的方法

参考文章:http://tishang.net/articles/1685610399.html。实现结果:计算出目前处于孕期多少周和预产期日期。

kaiser010的博客 1336
上一篇: JSpinner心得和范例!!
下一篇: ResultSet用发!
zhouysh
博客等级 码龄24年 8粉丝 31原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值