javacript:alert('abc')这abc是什么意思书写方式

74224人阅读
ruby and rails(49)
JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码。
在Java中直接调用js代码
不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert” is not defined。
package com.sinaapp.&
import javax.script.ScriptE&
import javax.script.ScriptEngineM
import javax.script.ScriptE & /**
* 直接调用js代码
public class ScriptEngineTest { & &
public static void main(String[] args) {&
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName(&javascript&);
engine.eval(&var a=3; var b=4;print (a+b);&);
// engine.eval(&alert(\&js alert\&);&);
// 不能调用浏览器中定义的js函数 // 错误,会抛出alert引用不存在的异常
}catch(ScriptException e){
e.printStackTrace();
输出结果:7
在Java中绑定js变量
在调用engine.get(key);时,如果key没有定义,则返回null
package com.sinaapp. &
import javax.script.B
import javax.script.ScriptC
import javax.script.ScriptE
import javax.script.ScriptEngineM
import javax.script.ScriptE &
public class ScriptEngineTest2 {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName(&javascript&);
engine.put(&a&, 4);
engine.put(&b&, 3);
Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
// 只能为Double,使用Float和Integer会抛出异常
Double result = (Double) engine.eval(&a+b&);
System.out.println(&result = & + result);
engine.eval(&c=a+b&);
Double c = (Double)engine.get(&c&);
System.out.println(&c = & + c);
} catch (ScriptException e) {
e.printStackTrace();
result = 7.0
在Java中调用js文件中的function,传入调用参数,并获取返回值
js文件中的merge函数将两个参数a,b相加,并返回c。
// expression.js&
function merge(a, b) {&
在Java代码中读取js文件,并参数两个参数,然后回去返回值。
package com.sinaapp. &
import java.io.FileR
& import javax.script.I
import javax.script.ScriptE
import javax.script.ScriptEngineM &
* Java调用并执行js文件,传递参数,并活动返回值
* @author manjushri
public class ScriptEngineTest { &
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName(&javascript&); &
String jsFileName = &expression.js&;
// 读取js文件
FileReader reader = new FileReader(jsFileName);
// 执行指定脚本
engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)
// 调用merge方法,并传入两个参数
// c = merge(2, 3);
Double c = (Double)invoke.invokeFunction(&merge&, 2, 3);
System.out.println(&c = & + c);
reader.close();
输出结果:
java调用脚本语言笔记(jython,jruby,groovy)
&有两种方法
1.java se 6以后实现了jsr 223规范
java代码:
ScriptEngineManager&factory&=&new&ScriptEngineManager();&&ScriptEngineManager&scriptEngine&=&factory.getEngineByName(&javascript&);&&scriptEngine.eval(code);&&
&很方便调用脚本
2.可以使用脚本语方本身提供的与java的集成手段
jython集成
使用jsr223:
前提下载jython的包,已实现jsr223
(建议在官网上下载,在安装目录下有jython.jar,&这里也有,但是这个包里没有jsr223的实现,看包下存不存在org.python.jsr223)
ScriptEngineManager&factory&=&new&ScriptEngineManager();&&ScriptEngineManager&scriptEngine&=&factory.getEngineByName(&python&);&&scriptEngine.eval(code);&&
使用PythonInterpreter,可以调用exec(String code)方法:
PythonInterpreter&interpreter&=&new&PythonInterpreter();&&interpreter.exec(code);&&
访问数据库
from&oracle.jdbc.driver&import&OracleDriver&&from&java.sql&import&DriverManager&&&&username&=&'hr'&&password&=&'123456'&&url&=&'jdbc:oracle:thin:@localhost:1521:XE'&&driver&=&OracleDriver()&&DriverManager.registerDriver(driver)&&conn&=&DriverManager.getConnection(url,&username,&password)&&stmt&=&conn.createStatement()&&sql&=&&select&salary&from&EMPLOYEES&t&where&t.salary&2300&&&rs&=&stmt.executeQuery(sql)&&while&(rs.next()):&&&print&rs.getInt('salary')&&rs.close()&&stmt.close()&&
使用zxJDBC :
from&com.ziclix.python.sql&import&zxJDBC&&&&url&=&'jdbc:oracle:thin:@localhost:1521:XE'&&username&=&'hr'&&password&=&'123456'&&driverName&=&'oracle.jdbc.driver.OracleDriver'&&mysqlConn&=&zxJDBC.connect(url,username,&password,driverName)&&cursor&=&mysqlConn.cursor()&&&&&&&cursor.execute(&select&last_name&from&EMPLOYEES&t&where&t.salary&2300&);&&&&list&=&cursor.fetchall()&&for&record&in&list:&&&&&&print&&name:&+record[0]&&&&&&
name:Olson
name:Philtanker
从数据库中查出的中文内容正常的。
而在代码里面的中文全部是乱码或抛异常,未解决。
与jruby集成
使用jsr223:Java代码
ScriptEngineManager&factory&=&new&ScriptEngineManager();&&ScriptEngineManager&scriptEngine&=&factory.getEngineByName(&jruby&);&&scriptEngine.eval(code);&&
&访问数据库
require&'java'&&&&module&JavaLang&&&&include_package&&java.lang&&&end&&&&module&JavaSql&&&&include_package&'java.sql'&&end&&&&begin&&&username&=&'hr'&&&password&=&'123456'&&&url&=&'jdbc:oracle:thin:@localhost:1521:XE'&&&driverName&=&'oracle.jdbc.driver.OracleDriver'&&&JavaLang::Class.forName(driverName).newInstance&&&conn&=&JavaSql::DriverManager.getConnection(url,&username,&password)&&&stmt&=&conn.createStatement&&&sql&=&&select&last_name&from&EMPLOYEES&t&where&t.salary&2300&&&&rs&=&stmt.executeQuery(sql)&&&while&(rs.next)&do&&&&puts&&名字:&+rs.getString(&last_name&)&&&end&&&rs.close&&&stmt.close&&&conn.close()&&rescue&JavaLang::ClassNotFoundException&&&puts&&ClassNotFoundException&&&rescue&JavaSql::SQLException&&&puts&&SQLException&&&end&&
名字:楹﹀厠
名字:Olson
名字:Philtanker
从数据库中查出的中文内容为乱码的。
而在代码里面的中文正常。
与groovy集成
使用jsr223:
ScriptEngineManager&factory&=&new&ScriptEngineManager();&&ScriptEngineManager&scriptEngine&=&factory.getEngineByName(&groovy&);&&scriptEngine.eval(code);&&
&使用GroovyShell:
GroovyShell&shell&=&new&GroovyShell();&&Script&script&=&shell.parse(code);&&Object&result&=&script.run();&&
访问数据库
Groovy代码
import&groovy.sql.Sql&&&&def&username&=&'hr'&&def&password&=&'123456'&&def&url&=&'jdbc:oracle:thin:@localhost:1521:XE'&&def&driverName&=&'oracle.jdbc.driver.OracleDriver'&&def&sql&=&Sql.newInstance(url,&username,&password,&driverName)&&&&sql.eachRow(&select&last_name&from&EMPLOYEES&t&where&t.salary&2300&)&{&&&println&&名字:${it.last_name}&&&}&&
名字:麦克
名字:Olson
名字:Philtanker
在使用groovy过程中碰到了一个异常
Exception in thread &main& java.lang.VerifyError: (class: groovy/runtime/metaclass/java/util/ArrayListMetaClass, method: super$2$invokeMethod signature: (Ljava/lang/CLjava/lang/OLjava/lang/S[Ljava/lang/OZZ)Ljava/lang/O) Illegal
use of nonvirtual function call
这个异常解决花了很长时间
是因为在原来项目中存在json-lib-2.1.jar(有可能名称为json-lib-2.1-jdk15.jar),这个包是用来处理json的,与groovy1.7.5存在冲突,更新为json-lib-2.3.jar即可
(json-lib里有一些groovy运行时处理的内容)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:233955次
积分:2183
积分:2183
排名:第18190名
原创:32篇
转载:67篇
评论:11条
(11)(8)(9)(3)(8)(2)(4)(16)(16)(15)(7)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'javacript prototype 解密
javacript prototype 解密
编辑:www.fx114.net
本篇文章主要介绍了"javacript prototype 解密",主要涉及到javacript prototype 解密方面的内容,对于javacript prototype 解密感兴趣的同学可以参考一下。
看了一下关于prototype的文章,但是,太书面化了,不易理解,我将prototype还原成类对象,和大家分享一下,如果不对,欢迎拍砖!&
Java代码&&
public&class&prototype&&
&&&&public&object&&&&&
&&&&public&prototype(constructor)&&
&&&&&&&self.constructor&=&&&
&&&&public&object&prototype()&&
&&&&&&&return&this.&&&
&&&&public&void&.=(key,value)&&
&&&&&&&set(key,value);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
public&class&&function&:&prototype&&
&&&&public&ArrayArguments&&&
&&&&public&object&prototype&=&prototype();&&
&&&&public&function()&&
&&&&&&&&&&
&&&&&&&&super(this);&&
&&&&&&&&&&
&&&&&&&&&&
&&&&public&callee()&&
&&&&&&&&function();&&
&&&&}&&&&&
测试代码 1&
Java代码&&
function&abc()&&
function&cba()&&
&&&&this.c&=&&cba.prototype&;&&
cba.prototype.d=&d&;&&
abc.prototype&=&new&cba();&&
var&obj&=&new&abc();&&
abc.prototype.c&=&&abc.prototype&;&&
obj.c&=&&self&;&&
alert(obj.c);&&
alert(abc.prototype.c);&&
alert(abc.prototype.d);&&
alert(obj.d);&&
测试代码 2&
Java代码&&
function&abc()&&
var&obj&=&new&abc();&&
obj.c&=&&self&;&&
alert(obj.c);&&
alert(abc.prototype.c);&&&
abc.prototype.c&=&&abc.prototype&;&&
alert(obj.c);&&&
alert(abc.prototype.c);&&&
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接: 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
javacript属性介绍大全
下载积分:30
内容提示:javacript属性介绍大全
文档格式:PDF|
浏览次数:11|
上传日期: 14:13:14|
文档星级:
全文阅读已结束,如果下载本文需要使用
 30 积分
下载此文档
该用户还上传了这些文档
javacript属性介绍大全
官方公共微信

我要回帖

 

随机推荐