在Java中使用javascript函数
JDK6已经发布很久了,很早就听过他已经支持脚本语言了,不过一直没有时间尝试,今天偷闲试了一下,感觉不错。
javax.script包它是Java新增的操作脚本的工具包,
利用它我们可以对脚本语言进行操作(本例仅是针对javascript
)
1.用引擎直接解析脚本公式
Java代码
//创建脚本引擎管理器
ScriptEngineManager sem = new ScriptEngineManager();
//创建一个处理JavaScript的脚本引擎
ScriptEngine engine = sem.getEngineByExtension("js");
try{
//执行js公式
engine.eval("if(6>5){flag=true;}else{flag =false;}");
}catch(ScriptException ex){
ex.printStackTrace();
}
//看看我们预期的反馈结果 true
System.out.println((engine.get("flag")));
2.创建方法并进行脚本调用(这个是我比较喜欢的一种方式)
Java代码
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByName("JavaScript");
//创建脚本
String script = "function max(first,second) "
+ "{ return (first > second) ?true:false;}";
//执行脚本
engine.eval(script);
Invocable inv = (Invocable) engine;
//执行方法并传递参数
Object obj = inv.invokeFunction("max", "0", "1");
//打印结果
System.out.println((Boolean)obj==false);
这里据说Invoable很有用,好多高级功能可以用到。
个人认为javascript主要用于前端操作dom对象,在java中有必要使用javascript函数吗?
相关文档:
result love(boy, girl)
{
if( boy.有房() and boy.有车() )
{
boy.set(nothing);
return girl.嫁给(boy);
&n ......
calcu() ----函数实现两个数相乘
document.write(); ---打印
document.calc.元素名.value; --获得表单的值
document.表单名。表单元素名。value 为表单赋值
定义函数:
function 名字()
{
//javaScript预语句
}
onClick="函数名";  ......
作用域 Scope
Javascript 中的函数属于词法作用域,也就是说函数在它被定义时的作用域中运行而不是在被执行时的作用域内运行。这是犀牛书上的说法。但“定义时”和“执行(被调用)时”这两个东西有些人搞不清楚。简单来说,一个函数A在“定义时”就是 function A(){} 这个语句执行的时候就 ......
static String string2Unicode(String s) {
try {
StringBuffer out = new StringBuffer("");
byte[] bytes = s.getBytes("unicode");
for (int i = 2; i < bytes.length - 1; i += 2) {
out.append("u");
String str = Integer.toHexString(bytes[i + 1] & 0xff);
f ......
base64编码在java中有很好的支持,但需要下载jar包,懒的找jar了,于是找到了源码,呵呵,这个不怕烦的话还可以研究下
代码如下:
public class Base64 {
private static final byte[] encodingTable = {
& ......