js怎么嵌入java代码是什么 JS嵌入到Java程序中
大家好,js怎么嵌入java代码是什么相信很多的网友都不是很明白,包括JS嵌入到Java程序中也是一样,不过没有关系,接下来就来为大家分享关于js怎么嵌入java代码是什么和JS嵌入到Java程序中的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
js怎么调用JAVA方法
用ajax的方法.
首先将要调用的类名和方法名作为参数传给某个servlet.这一步的方法有许多种,用框架,或者直接用xmlHttpRequest对象.
另外,要调用的类名和类的完整包路径最好写在配置文件里
这里假设类名为Hello,方法名为sayHello,并且sayHello方法不带参数,类路径为com.demo.Hello
配置文件AjaxConfig.properties
Hello= com.demo.Hello
于是传入的参数为 class=Hello&method=sayHello
在servlet中作如下处理:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
.
读取配置文件,取出className所对应的值放入classPath变量中(这一步方法有很多种,怎么读配置文件,可以网上找资料,很多的,我就不细写了)
.
Class c=Class.forName(classPath);//加载你所指定的类
Class param[]=new Class[0];//方法的参数为0个
Method m=null;
String returnValue=null;//返回值
try{
m= c.getMethod("sayHello",param);//获取你所指定的类中的指定方法
} catch(SecurityException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(NoSuchMethodException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
try{
returnValue=(String)m.invoke(c.newInstance(), new Object[0]);//调用你所指定的方法
} catch(IllegalArgumentException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IllegalAccessException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(InvocationTargetException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(InstantiationException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
最后,将returnValue的值返回给客户端即可
类Hello.java
public class Hello
{
public String sayHello()
{
return"hello";
}
}
不明白的加67919823,我们一起讨论呀
JS嵌入到Java程序中
随着java的出现向java嵌入javascript脚本变的特别容易 java引入了一个新的javax script包为脚本化语言提供了一个通用接口
案例;小说网java中嵌入javascript脚本的思路
取得脚本解释器的管理器Manager
从管理器中取得js的解释器实例ScriptEngine
取得存储javascript变量的Bindings实例
把一个java io Reader流及Bindings传递给ScriptEngine的eval()方法从而运行存储在外部文件中的脚本 eval()方法返回脚本运行结果如果执行中发生错误会抛出ScriptException异常
例运行javascript脚本的一个java程序
importjava io*;importjavax script Bindings;importjavax script ScriptEngine;importjavax script ScriptEngineManager;importjavax script ScriptException;/**authorby?id=*/publicclassRunScript{publicstaticvoidmain(String[]args)throwsIOException{ScriptEngineManagerscriptManager=newScriptEngineManager();//得到解释器的管理器里面有很多种脚本解释器ScriptEnginejs=scriptManager getEngineByExtension(;js);//从管理器中获取js的解释器//定义我们要运行的脚本文件Stringfilename=null;//通过解释器来获得存储javascript变量的Bindings的实例使它们提供给脚本 Bindingsbindings=js createBindings();//处理参数参数是定义的脚本的变量参数可能包括 Dname/value对我们要进行处理任何参数不能以 D为文件名开始for(inti=;i<args length;i++){Stringarg=args[i];if(arg startsWith( D)){//如果参数是以 D开头则进行处理intpos=arg indexOf(=);if(pos==)usage();Stringname=arg substring( pos);Stringvalue=arg substring(pos+);//注意我们定义的所有的变量是字符串如果必要的话我们可以通过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);//读取文件的流Readerin=newFileReader(filename);try{//执行脚本并取得结果注意in就相当于js中的脚本而bindings是脚本执行所需要的变量Objectresult=js eval(in bindings);System out println(result);}catch(ScriptExceptionex){//执行过程中出异常则显示一个错误信息System out println(ex);}}staticvoidusage(){System err println( Usage:javaRunScript[ Dname=value]script js);System exit();//异常退出程序如果正常退出程序用System exit();}}
这段代码中所创建的Bindings对象不是静态的 JavaScript脚本所创建的所有的变量都存储在这里下面是一个脚本化Java的更加实用的例子它将它的Bindings对象存储在一个具有较高的作用域的ScriptContext对象中以便可以读取其变量但是新的变量就不存储到Binhdings对象中这个例子实现了一个简单的配置文件工具即一个文本文件用来定义名字/值对可以通过这里定义的Configuration类来查询它们值可能是字符串数字或布尔值并且如果一个值包含在花括号中那么它就会传递给一个JavaScript解释器去计算 java util Map对象保存了这些包装在一个SimpleBindings对象中的值这样一来 JavaScript解释器也可以访问同一个文件中定义的其他变量的值
lishixinzhi/Article/program/Java/JSP/201311/19250js 怎么调用JAVA类的方法具体代码
用ajax的方法.
首先将要调用的类名和方法名作为参数传给某个servlet.这一步的方法有许多种,用框架,或者直接用xmlHttpRequest对象.
另外,要调用的类名和类的完整包路径最好写在配置文件里
这里假设类名为Hello,方法名为sayHello,并且sayHello方法不带参数,类路径为com.demo.Hello
配置文件AjaxConfig.properties
Hello= com.demo.Hello
于是传入的参数为 class=Hello&method=sayHello
在servlet中作如下处理:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
.
读取配置文件,取出className所对应的值放入classPath变量中(这一步方法有很多种,怎么读配置文件,可以网上找资料,很多的,我就不细写了)
.
Class c=Class.forName(classPath);//加载你所指定的类
Class param[]=new Class[0];//方法的参数为0个
Method m=null;
String returnValue=null;//返回值
try{
m= c.getMethod("sayHello",param);//获取你所指定的类中的指定方法
} catch(SecurityException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(NoSuchMethodException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
try{
returnValue=(String)m.invoke(c.newInstance(), new Object[0]);//调用你所指定的方法
} catch(IllegalArgumentException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IllegalAccessException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(InvocationTargetException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(InstantiationException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
最后,将returnValue的值返回给客户端即可
类Hello.java
public class Hello
{
public String sayHello()
{
return"hello";
}
}
不明白的加67919823,我们一起讨论呀
如果你还想了解更多这方面的信息,记得收藏关注本站。