- 浏览: 276558 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
han2000lei:
问题已解决,见下面代码
public void validat ...
一个关于struts2上传文件超过限制大小如何提示的问题 -
liuxuejin:
你好,我想请教你一个问题,我们打算开发一个BS架构的卖家服务应 ...
淘宝API开发ISV订购页面必看 -
andey007518:
properties文件直接放到src路径下,
Propert ...
java读取properties配置文件 -
dove19900520:
朋友,你这个支持群发吗?为什么我按照你的写法来了改了一下,做成 ...
javamail发送邮件 -
emengbingkuai:
终于找到了
javascript中获取某月的天数
随着java6.0的出现,向java嵌入javascript脚本变的特别容易。java6引入了一个新的javax.script包,为脚本化语言提供了一个通用接口。
java中嵌入javascript脚本的思路:
1.取得脚本解释器的管理器Manager
2.从管理器中取得js的解释器实例ScriptEngine
3.取得存储javascript变量的Bindings实例
4.把一个java.io.Reader流及Bindings传递给ScriptEngine的eval()方法,从而运行存储在外部文件中的脚本。eval()方法返回脚本运行结果,如果执行中发生错误,会抛出ScriptException异常。
例:运行javascript脚本的一个java程序
例:一个解释JavaScript表达式的Java配置文件工具
java中嵌入javascript脚本的思路:
1.取得脚本解释器的管理器Manager
2.从管理器中取得js的解释器实例ScriptEngine
3.取得存储javascript变量的Bindings实例
4.把一个java.io.Reader流及Bindings传递给ScriptEngine的eval()方法,从而运行存储在外部文件中的脚本。eval()方法返回脚本运行结果,如果执行中发生错误,会抛出ScriptException异常。
例:运行javascript脚本的一个java程序
import java.io.*; import javax.script.Bindings; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class RunScript { public static void main(String[] args) throws IOException{ ScriptEngineManager scriptManager = new ScriptEngineManager();//得到解释器的管理器,里面有很多种脚本解释器 ScriptEngine js = scriptManager.getEngineByExtension("js");//从管理器中获取js的解释器 //定义我们要运行的脚本文件 String filename = null; //通过解释器来获得存储javascript变量的Bindings的实例,使它们提供给脚本。 Bindings bindings = js.createBindings(); //处理参数,参数是定义的脚本的变量。参数可能包括-Dname/value对。我们要进行处理,任何参数不能以‘-D’为文件名开始 for(int i = 0;i<args.length;i++){ String arg = args[i]; if(arg.startsWith("-D")){//如果参数是以“-D”开头,则进行处理 int pos = arg.indexOf('='); if(pos == -1) usage(); String name=arg.substring(2,pos); String value= arg.substring(pos+1); //注意:我们定义的所有的变量是字符串,如果必要的话,我们可以通过java.lang.Number ,一个java.lang.Boolean,任何Java对象或NULL,将脚本转换为其他类型。 bindings.put(name, value);//脚本中的变量存入bindings实例中 }else{ if(filename!=null)usage(); filename=arg; } } //这里是为了确保我们得到了一个文件的参数。 if(filename==null){ usage(); } //增加一个具有约束力的使用特殊的保留变量名称,告诉脚本引擎的文件的名称将执行。这使它能够提供更好的错误信息 bindings.put(ScriptEngine.FILENAME, filename); //读取文件的流 Reader in = new FileReader(filename); try{ //执行脚本并取得结果。注意in就相当于js中的脚本,而bindings是脚本执行所需要的变量 Object result = js.eval(in,bindings); System.out.println(result); }catch(ScriptException ex){ //执行过程中出异常则显示一个错误信息 System.out.println(ex); } } static void usage(){ System.err.println("Usage: java RunScript[-Dname=value...] script.js"); System.exit(1);//异常退出程序。如果正常退出程序用System.exit(0); } }这段代码中所创建的Bindings对象不是静态的,JavaScript脚本所创建的所有的变量都存储在这里。下面是一个脚本化Java的更加实用的例子。它将它的Bindings对象存储在一个具有较高的作用域的ScriptContext对象中,以便可以读取其变量,但是新的变量就不存储到Binhdings对象中。这个例子实现了一个简单的配置文件工具,即一个文本文件,用来定义名字/值对,可以通过这里定义的Configuration类来查询它们。值可能是字符串、数字或布尔值,并且,如果一个值包含在花括号中,那么它就会传递给一个JavaScript解释器去计算。java.util.Map对象保存了这些包装在一个SimpleBindings对象中的值,这样一来,JavaScript解释器也可以访问同一个文件中定义的其他变量的值。
例:一个解释JavaScript表达式的Java配置文件工具
import javax.script.*; import java.util.*; import java.io.*; //这个类像java.util.Properties ,但是允许属性值执行javascript表达式 public class Configuration { Map<String,Object> defaults = new HashMap<String,Object>(); //在map中获取和设置值的方法 public Object get(String key){ return defaults.get(key); } public void put(String key,Object value){ defaults.put(key, value); } //从map的name/value对中获取初始化内容。如果一个值在大括号内,表示是一个javascript脚本,计算它 public void load(String filename) throws IOException,ScriptException{ //获得javascript编译器 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByExtension("js"); //使用我们的name/value对(即javascript变量) Bindings bindings = new SimpleBindings(defaults); //创建一个变量,用于存放脚本执行的内容 ScriptContext context = new SimpleScriptContext(); //设置那些Bindings 在Context 中,使它们可读。但这样的变量定义的脚本不要放入我们的Map中 context.setBindings(bindings, ScriptContext.GLOBAL_SCOPE); BufferedReader in = new BufferedReader(new FileReader(filename)); String line; while((line=in.readLine())!=null){ line = line.trim(); if(line.length()==0) continue;//跳过空行 if(line.charAt(0)=='#')continue;//跳过命令 int pos = line.indexOf(":"); if(pos == -1){ throw new IllegalArgumentException("syntax:"+line); } String name = line.substring(0,pos).trim(); String value= line.substring(pos+1).trim(); char firstchar = value.charAt(0); int len = value.length(); char lastchar = value.charAt(len-1); if(firstchar=='"'&&lastchar=='"'){ //双引号引用的值为字符串 defaults.put(name, value.substring(1,len-1)); }else if(Character.isDigit(firstchar)){ //如果开始是一个数字 try{ double d = Double.parseDouble(value); defaults.put(name, value); }catch (NumberFormatException e) { //没有数字,是一个string defaults.put(name, value); } }else if("true".equals(value)){//处理布尔值 defaults.put(name,Boolean.TRUE); }else if("false".equals(value)){ defaults.put(name, Boolean.FALSE); }else if("null".equals(value)){//处理null值 defaults.put(name, null); }else if(firstchar=='{'&&lastchar=='}'){ //如果值是在一对大括号之内,则执行javascript代码 String script = value.substring(1,len-1); Object result = engine.eval(script,context); defaults.put(name, result); }else{ //其它情况,刚好是一个字符串 defaults.put(name, value); } } } //一个简单的类的测试程序 public static void main(String[] args) throws IOException,ScriptException{ Configuration defaults = new Configuration(); defaults.load(args[0]); Set<Map.Entry<String, Object>> entryset = defaults.defaults.entrySet(); for(Map.Entry<String, Object> entry:entryset){ System.out.printf("%s:%s%n",entry.getKey(),entry.getValue()); } } }
发表评论
-
json的介绍(三)----json在java的使用
2012-12-05 14:20 1393在java中,常使用JSON-LIB,首先要有几个支持的包 j ... -
json的介绍(二)----json在web的使用
2012-12-05 13:58 1734现在来看一下它在web的使用: 因为语言的不同,在act ... -
javascript对form表单的DOM操作
2009-11-21 10:10 4408一、Form对象 DOM继承关系:Node —— Elemen ... -
javascript对table的DOM操作
2009-11-21 09:26 3209一、Table对象 DOM继承关系:Node —— Eleme ... -
javascript DOM 删除表格
2009-11-20 11:23 1397javascript使用DOM动态删除表格中的一行,赶快复制到 ... -
javascript DOM
2009-11-16 13:04 2988javascript操作DOM w3c把文档表示为树。我们先从 ... -
jquery使用备忘
2009-11-07 13:11 11591、获取一个text文本框 ... -
遮罩效果
2009-07-18 10:09 1683我们以输入密码为例 首先,做一个页面,用作当遮罩效果出现时的对 ... -
MSN,QQ在线即时交谈网页代码
2009-06-09 10:29 15420想让你的msn和QQ一样可 ... -
单击其它区域关闭日历控件(兼容firfox与IE)
2009-05-28 15:04 2484这两天使用javascript的一个日历控件CbsCale ... -
prototype的ajax
2009-05-19 14:41 1118function prodcheck(pid){ var ... -
javascript动态添加表格
2009-05-19 13:28 4891javascript动态增加和删除表格行的例子: <s ... -
几个正则表达式的备忘
2009-05-15 22:28 14821、身份证号正则表达式15位 /^[1-9]\d{7}((0\ ... -
javascript中的window对象详解
2009-04-07 16:49 0有些人一直使用js中的window对象,却对windo ... -
javascript脚本化java
2009-03-22 20:58 2216JavaScript解释器包含一种功能,允许JavaS ... -
java与javascript的数据类型转换
2009-03-18 14:43 3762无论何时,从一种语言中调用另一种语言的时候,都必须考虑 ... -
javascript中的模块和名字空间
2009-03-04 12:35 3760javascript中的模块和名字 ... -
javascript中从一个类借用方法供另一个类使用
2009-03-02 09:03 1886在javascript中,子类化和继承都不是扩展一个类的唯一方 ... -
javascript中子类调用父类中被覆盖的方法
2009-03-02 08:48 4679当子类的方法与超类同名时,子类的方法会覆盖超类的这个同名方法。 ... -
javascript中调用被覆盖的方法
2009-02-20 17:04 2831先定义一个父类的构造函数: function Rectangl ...
相关推荐
Java 嵌入式浏览器是将网页浏览功能集成到 Java 应用程序中的技术,使得开发者可以在自己的应用中实现网页展示、数据交互等功能。这里提到的"Java嵌入谷歌内核简单浏览器跨平台"项目,显然是利用了谷歌浏览器的渲染...
本文将深入探讨如何在JAVA GUI中嵌入浏览器页面,以实现类似的功能,如在桌面应用中打开和显示网页。 首先,我们需要了解的是Java中用于嵌入浏览器的API——Java Desktop Integration Components (JDIC)。JDIC 是一...
而`HtmlFrame.jar`可能是一个Java类库,用于封装HTML帧的处理逻辑,便于在Java程序中更方便地管理和操作HTML内容。这个库可能包含了与JavaFX WebView类似的功能,但提供了一种更简洁的API,或者具有特定的增强功能,...
3. **嵌入到Java应用程序**:Rhino可以轻易地被嵌入到Java应用程序中,作为动态脚本语言的引擎,用于扩展或配置应用程序。 4. **完整的ECMAScript支持**:Rhino支持ECMAScript标准,这意味着它可以执行符合...
Java嵌入谷歌内核简单浏览器是一种技术实现,它允许开发者在Java应用程序中集成谷歌的Chromium Embedded Framework(CEF),从而创建具有现代Web浏览功能的应用。CEF是一个开源项目,它为各种编程语言提供了一个轻量...
总的来说,通过JSR 223,Java开发者可以轻松地在Java程序中嵌入JavaScript,实现两者的交互,从而利用JavaScript的灵活性和动态性来增强应用程序的功能。不过需要注意,随着Nashorn的废弃,未来可能需要转向其他引擎...
在移动应用开发中,WebView组件是一个非常重要的工具,它允许开发者在原生应用程序中嵌入网页内容,并且可以通过JavaScript与应用程序的Java代码进行交互。这个"webview组件javascript调用java的小程序"就是一个实例...
在Java程序中使用jQuery进行网页抓取可以极大地提高效率,因为jQuery是一个强大的JavaScript库,它提供了丰富的DOM操作和事件处理功能,使得我们可以更方便地解析和操作HTML文档。 在Java中实现jQuery的集成,我们...
综上所述,这个程序提供了一个轻量级、无框架依赖的解决方案,用于Java Web应用程序中的Excel文件下载。前端通过JavaScript与后端JSP进行通信,利用iframe实现无感知的文件下载,后端则负责生成或准备Excel文件。...
5. **`java.applet.Applet`** - 用于在网页中嵌入 Java 程序的特殊类。 **Applet 程序特点:** JavaApplet 具备多种特性,使其成为构建交互式网页内容的理想选择: 1. **基本的绘画功能** - 可以在屏幕上绘制图像...
Java程序在IT领域中扮演着重要的角色,尤其在创建网页式小程序方面。Java以其跨平台、安全性高和可移植性等特点,成为了开发此类应用的理想选择。网页式小程序,也称为Web应用程序,允许用户在浏览器中直接运行,...
在Java程序设计中,创建一个网页浏览器涉及到许多关键知识点,包括网络编程、GUI设计、解析HTML等。以下是对这些主题的详细阐述: 1. **Java网络编程**:Java提供了丰富的API来处理网络通信,如`java.net`包下的...
Java可以通过`javax.script`包中的接口与JavaScript交互,允许在Java程序中执行JavaScript脚本或者调用JavaScript函数。 3. **Web Services和Ajax**:Java后端可以提供Web服务(如RESTful API),JavaScript通过...
在Java中使用JavaScript,官方指南主要介绍的是在Java平台标准...开发者可以通过官方文档学习如何集成和使用JavaScript脚本引擎,以及如何处理相关的编程问题,从而在Java程序中有效地利用JavaScript来实现特定的功能。
Rhino是Mozilla基金会开发的一个开源的JavaScript引擎,它可以嵌入到Java应用程序中,使得Java应用能够执行JavaScript代码。 描述中提到的文章链接已经失效,但根据上下文,我们可以推测文章提供了如何使用...
HTML文件中嵌入Java程序是一种常见的技术,使得网页可以具有更强的交互性和动态性。Java Applet是这种技术的一种体现,它允许开发者在HTML页面中嵌入Java小程序,从而实现客户端的计算和图形处理等功能。在本文中,...
使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的...
由于其轻量级、易用性和高度可定制性,FCKeditor被广泛应用于各种Web应用程序中。 二、Java与FCKeditor的结合 在Java应用中嵌入FCKeditor,主要是为了在服务器端处理由编辑器提交的HTML内容。这个过程通常涉及到...
Java Swing 是Java GUI编程库的一部分,它允许开发者创建桌面应用程序。在某些场景下,我们可能需要在Swing应用中嵌入一个浏览器组件,以便展示网页内容或者与Web服务交互。这个压缩包文件“Java-Swing嵌入浏览器...
- **Java Applet**:Java Applet 是一种嵌入到网页中的小型Java应用程序,可以在支持Java的Web浏览器上运行。它能够通过网络下载并在用户的机器上运行,但受到沙箱安全限制。 - **Java Servlet**:Java Servlet 是...