「java实现js」java实现js脚本引擎

博主:adminadmin 2022-11-29 06:18:08 52

今天给各位分享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脚本引擎的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。