如何在JAVA后台输出JS

JavaScript017

如何在JAVA后台输出JS,第1张

参考下面代码:

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