JDK1.6版添加了新的ScriptEngine類,允許用戶直接執(zhí)行js代碼。
創(chuàng)新互聯(lián)是專業(yè)的岷縣網(wǎng)站建設(shè)公司,岷縣接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行岷縣網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
在Java中直接調(diào)用js代碼
不能調(diào)用瀏覽器中定義的js函數(shù),會(huì)拋出異常提示ReferenceError: “alert” is not defined。
package com.sinaapp.manjushri;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException; /** * 直接調(diào)用js代碼 */
public class ScriptEngineTest {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try{
engine.eval("var a=3; var b=4;print (a+b);");
// engine.eval("alert(\"js alert\");"); // 不能調(diào)用瀏覽器中定義的js函數(shù) // 錯(cuò)誤,會(huì)拋出alert引用不存在的異常
}catch(ScriptException e){
e.printStackTrace();
}
}
}
public void outString(String str) {
try {
getResponse().setContentType("text/json;charset=utf-8");
PrintWriter out = getResponse().getWriter();
out.write(str);
} catch (IOException e) {
}
}
//字符串轉(zhuǎn)換為json
public void outJsonString(String str) {
outString(str);
}
// 對(duì)象轉(zhuǎn)換JSON格式
public void outJson(Object obj) {
try {
String json=JSONObject.fromObject(obj).toString();
outJsonString(json);
} catch (Exception e) {
e.printStackTrace();
}
}
// 數(shù)組轉(zhuǎn)換JSON格式
public void outJsonArray(Object array) {
try {
outJsonString(JSONArray.fromObject(array).toString());
} catch (Exception e) {
e.printStackTrace();
}
}
后臺(tái):ListQuestionsOptions questionsOptionsList=new ArrayListQuestionsOptions() ;
outJsonArray(questionsOptionsList);
jquery 代碼:
$.ajax({
url:'questionsOptionsList.action',
type:'post',
data:loadValue, //傳給后臺(tái)的參數(shù)
dataType:'json', //返回值類型 一般設(shè)置為json
success:function (data, status) //服務(wù)器成功響應(yīng)處理函數(shù)
{
showHTML(data);
},
error:function (data, status, e)//服務(wù)器響應(yīng)失敗處理函數(shù)
{
alert(e);
}
});
function showHTML(data) {
for(var i=0;idata.length;i++){
alert(data[i].Content);
}
}
js 不應(yīng)該負(fù)責(zé)加密解碼,
應(yīng)該只負(fù)責(zé)傳遞數(shù)據(jù),可以傳遞加密前的,也可以傳遞加密后的
加密解碼的工作都應(yīng)該放在服務(wù)端來處理
Java 代碼如下:
%
// 得到要轉(zhuǎn)換的數(shù)組---當(dāng)然這里也可以是其他類型的數(shù)組
List jsList = (List) request.getAttribute("gczbh");
%
JS 代碼如下:
script type="text/JavaScript"
function initPages()
{
var codes = new Array();
// 將JAVA中的數(shù)組轉(zhuǎn)換成JS 的數(shù)組
%
if(jsList!=null)
{
for(int i=0;ijsList.size();i++)
{
%
codes[%=i%]='%=jsList.get(i)%';
% }
}
%
/script