js里运行java代码 js直接运行
单独的js文件,怎样才能使用Java代码?
用DWR
创新互联专注于企业全网整合营销推广、网站重做改版、临川网站定制设计、自适应品牌网站建设、HTML5建站、商城网站定制开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为临川等各大城市提供网站开发制作服务。
它包含两个主要的部分:允首判许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容.
DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运尘颂行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.
这个从JAVA到JavaScript的远程功能方法给DWR的用户带来非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有运行在WEB上但是不需要浏览器插件的好处.
DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的简单自然.对此最大的挑战就是把AJAX的异步特性和正常JAVA方法调用的同步特性派芹郑相结合.在异步模式下,结果数据在开始调用之后的一段时间之后才可以被异步访问获取到.DWR允许WEB开发人员传递一个回调函数,来异步处理Java函数调用过程.
另处 .dwr还是文件的一种格式: 比如以Dreamweaver软件里有查找和替换,经常用的查找和替换内容可以保存,保存的文件就是以 .dwr结尾的文件。这种文件用记事本打开后可以看到它的内容。
js 执行java代码问题
这个应该可以的,思路如下:不知道合不合你意
1.用javascript写一个函数,在单击“显示”时,调用函数,将程纯或序通过http请求参数形式交由Java处理;
2.直没陵接将“显示”做成超链接;
a href="process_show.jsp"显示/a
a href="process_show.jsp?paramter=传输参数"显示/a
这样点击显示后,程序枯裤戚会转到process_show.jsp页面,由Tomcat或是其它JAVA服务器处理;你在通过JSP获得处理结果就可以了!
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程序
import java io *; import javax script Bindings; import javax script ScriptEngine; import javax script ScriptEngineManager; import javax script ScriptException; /**author by ?id= */public class RunScript { public static void main(String[] args) throws IOException{ ScriptEngineManager scriptManager = new ScriptEngineManager();//得到解释器的管理器 里面有很多种脚本解释器 ScriptEngine js = scriptManager getEngineByExtension( ;js );//从管理器中获取js的解释器 //定义我们要运行的颤扮胡脚本文件 String filename = null; //通过解释器来获得存储javascript变量的Bindings的实例 使它们提供给脚本 Bindings bindings = js createBindings(); 茄拦 //处理参数 参数是定义的脚本的变量 参数可能包括 Dname/value对 我们要进行处理 任何参数不能以 D 为文件名开始 for(int i = ;iargs length;i++){ String arg = args[i]; if(arg startsWith( D )){//如果参数是以 D 开头 则进行处理 int pos = arg indexOf( = ); if(pos == ) usage(); String name=arg substring( pos); String value= 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); //读取文件的流 Reader in = new FileReader(filename); try{ //执行脚本并取得结果 注意in就相当于js中的脚本 而bindings是脚本执行所需要的变量 Object result = js eval(in bindings); System out println(result); }catch(ScriptException ex){ //执行过程中出异常则显示一个错误信息 System out println(ex); } } static void usage(){ System err println( Usage: java RunScript[ 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/19250
本文题目:js里运行java代码 js直接运行
网页路径:http://cdiso.cn/article/ddpecgh.html