「java实现js」java实现js脚本引擎
今天给各位分享java实现js的知识,其中也会对java实现js脚本引擎进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java调用请求页面js方法有哪些
其实网上有很多方法
/** 加载脚本引擎,并在java中调用js方法 */
public void test2(){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try {
String str="21";
Double d = (Double) engine.eval(str);
Integer i=d.intValue();
System.out.println(i);
} catch (ScriptException ex) {
ex.printStackTrace();
} }
/*
* 在java中调用js,jdk1.6中有加载js引擎类,然后由它来调用js方法。
* 并通过JDK平台给script的方法中的形参赋值
*/
public void test(String name)
{
ScriptEngineManager sem = new ScriptEngineManager();
/**sem.getEngineByExtension(String extension)参数为js
sem.getEngineByMimeType(String mimeType) 参数为application/javascript 或者text/javascript
sem.getEngineByName(String shortName)参数为js或javascript或JavaScript
*/
ScriptEngine se = sem.getEngineByName("js");
try
{
String script = "function say(){ return 'hello,'"+name+"; }";
se.eval(script);
Invocable inv2 = (Invocable) se;
String res=(String)inv2.invokeFunction("say",name);
System.out.println(res);
}
catch(Exception e)
{
e.printStackTrace();
}
}
/** 演示如何将java中对象作为js中全局变量,同时演示将file类赋给脚本语言,并获得其属性。
*/
public void testScriptVariables()
{
ScriptEngineManager sem=new ScriptEngineManager();
ScriptEngine engine=sem.getEngineByName("js");
File file=new File("c:\\1.txt");
engine.put("f", file);
try {
engine.eval("println('path:'+f.getPath())");//无法使用alert方法
} catch (ScriptException e) {
e.printStackTrace();
}
}
/*
* 演示如何在java中如何通过线程来启动一个js方法
*/
public void testScriptInterface() throws ScriptException
{
ScriptEngineManager sem=new ScriptEngineManager();
ScriptEngine engine=sem.getEngineByName("js");
String script="var obj=new Object();obj.run=function(){println('test thread')}";
engine.eval(script);
Object obj=engine.get("obj");//获取js中对象
Invocable inv=(Invocable)engine;
Runnable r=inv.getInterface(obj,Runnable.class);
Thread t=new Thread(r);
t.start();
}
java 代码中如何写javascript语句
1.通过AJAX用JS访问JAVA中的某个方法,然后在JAVA代码中将JS代码放到response的输出流中,然后eval()返回的JS代码。
2.JSP中可以嵌入java代码块,比如在jsp页面中写如下代码:
script
%if(a==1){%
alert("abc");
%}%
/script
这样页面在加载的时候就会先执行JAVA代码,如果a==1了 alert("abc")这句JS代码才会有。
希望满足你的要求
如何在java调用js
script type="text/javascript" src="js/jquery-3.1.0.min.js"/script
就是这样引入js 。src 的 'js'的js是webroot下自己创建的名为js的文件夹 ,jquery-3.1.0.min.js是需要引入的js文件,你自己写的js文件也可以这样引入调用。还可以直接在页面上这样写:
script language="JavaScript" type="text/javascript"
function init() {
---------
}
/script
如何在java中调用js方法
js代码如下:
[javascript] view plain copy
function formula(var1,var2){
return var1+var2-factor;
}
java代码如下:
[java] view plain copy
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class AboutJavaScript {
public static void main(String[] args) throws Exception {
ScriptEngine engine=new ScriptEngineManager().getEngineByName("javascript");
Bindings bind = engine.createBindings();
bind.put("factor", 1);
engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
Scanner input=new Scanner(System.in);
while (input.hasNextInt()) {
int first= input.nextInt();
int sec=input.nextInt();
System.out.println("输入参数是:"+first+","+sec);
engine.eval(new FileReader("F:/model.js"));
if(engine instanceof Invocable){
Invocable in =(Invocable) engine;
Double result=(Double) in.invokeFunction("formula", first,sec);
System.out.println("运行结果:"+result.intValue());
}
}
}
}
java实现js的中一样的函数方法
package know.t5;
public class UrlEncodeWithoutASCII {
public static String encode(String input)
{
StringBuilder sb = new StringBuilder(input.length() + 16);
appendEncoded(sb, input);
return sb.toString();
}
public static StringBuilder appendEncoded(StringBuilder sb, String input)
{
int safe[] = SAFE_ASCII;
int i = 0;
int c;
for(int len = input.length(); i len; i += Character.charCount(c))
{
c = input.codePointAt(i);
if(c = 127)
{
if(safe[c] != 0)
sb.append((char)c);
else
appendSingleByteEncoded(sb, c);
} else
{
appendMultiByteEncoded(sb, c);
}
}
return sb;
}
private static final void appendSingleByteEncoded(StringBuilder sb, int value)
{
sb.append('%');
sb.append(HEX[value 4]);
sb.append(HEX[value 15]);
}
private static final void appendMultiByteEncoded(StringBuilder sb, int value)
{
if(value 2048)
{
appendSingleByteEncoded(sb, 192 | value 6);
appendSingleByteEncoded(sb, 128 | value 63);
} else
if(value 65536)
{
appendSingleByteEncoded(sb, 224 | value 12);
appendSingleByteEncoded(sb, 128 | value 6 63);
appendSingleByteEncoded(sb, 128 | value 63);
} else
{
appendSingleByteEncoded(sb, 240 | value 18);
appendSingleByteEncoded(sb, 128 | value 12 63);
appendSingleByteEncoded(sb, 128 | value 6 63);
appendSingleByteEncoded(sb, 128 | value 63);
}
}
private static final int SAFE_ASCII[];
private static final char HEX[] = "0123456789ABCDEF".toCharArray();
static
{
SAFE_ASCII = new int[128];
for(int i = 97; i = 122; i++)
SAFE_ASCII[i] = 1;
for(int i = 65; i = 90; i++)
SAFE_ASCII[i] = 1;
for(int i = 39; i = 57; i++){
if(i==43||i==44||i==47)
continue;
SAFE_ASCII[i] = 1;
}
SAFE_ASCII[33] = 1;
SAFE_ASCII[95] = 1;
SAFE_ASCII[126] = 1;
}
}
encodeURIComponent函数可以用上面的类encode方法代替,unescape可以用任意URLDecoder代替,btoa可以用任意Base64工具代替(参数为byte[]时需将字符串按utf8编码),这个方案你可以试试效果
关于java实现js和java实现js脚本引擎的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。