HttpServletResponse response = ServletActionContext.getResponse()
try {
response.setContentType("text/htmlcharset=gbk")
response.setCharacterEncoding("gbk")
response.setHeader("Cache-Control", "no-cache")
String html = "<script language='javascript'>alert('所选字段已经存在,请添加其他字段!') </script>"
response.getWriter().write(html)
}
catch (IOException e) {
e.printStackTrace()
}
首先呢 js 是网络脚本语言,可以进行运算Java呢 是程序设计语言
首先,你js要运算的数据从哪里来,页面或是在js函数里直接写死? 当然 都可以
Java呢,要输出,输出的内容从哪里来?要输出js运算的结果,对吧
那么 你首先做的当然是写js函数去运算,得到结果
那么,如果你想用Java输出,就要把你js运算的结果传给Java .
js传值给Java,目前最常用的就是ajax,手写ajax费时费力,一般都会采用jquery的ajax.希望可以帮到你,虽然不知道你这样做的目的是什么,这样做应该没有问题.
在Java中调用js文件中的function,传入调用参数,并获取返回值js文件中的merge函数将两个参数a,b相加,并返回c。
// expression.js
function merge(a, b) {
c = a * b
return c
}
在Java代码中读取js文件,并参数两个参数,然后回去返回值。
package com.sinaapp.manjushri
import java.io.FileReader
import javax.script.Invocable
import javax.script.ScriptEngine
import javax.script.ScriptEngineManager
/** * Java调用并执行js文件,传递参数,并活动返回值 * * @author manjushri */
public class ScriptEngineTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager()
ScriptEngine engine = manager.getEngineByName("javascript")
String jsFileName = "expression.js" // 读取js文件
FileReader reader = new FileReader(jsFileName) // 执行指定脚本
engine.eval(reader)
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine // 调用merge方法,并传入两个参数
// c = merge(2, 3)
Double c = (Double)invoke.invokeFunction("merge", 2, 3)
System.out.println("c = " + c)
}
reader.close()
}
}
输出结果:
c = 5.0