1. JSONFunction对象是JavaScript函数的文本
1.1. JSONFunction(String text) 构造函数。
1.2. JSONFunction(String[] params, String text) 构造函数。
1.3. String[] getParams() 参数列表。
1.4. String getText() 函数文本。
1.5. String toString() 返回文本。
2. JSONFunction和JavaScript沟通
2.1. 新建一个名为JsonLibJSONFunction动态的Web工程, 同时添加相关jar包。
2.2. 编写MyJSONFunction.java
package com.lywgames.jsonlib;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONFunction;
import net.sf.json.JSONObject;
/**这个JSONFunction实在感觉没什么用
* 1. JSONFunction对象是JavaScript函数的文本
* 1.1. JSONFunction(String text) 构造函数
* 1.2. JSONFunction(String[] params, String text) 构造函数
* 1.3. String[] getParams() 参数列表
* 1.4. String getText() 函数文本
* 1.5. String toString() 返回文本
*/
public class MyJSONFunction extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String myFun = req.getParameter("myFun");
String[] params = {"2988", "3988", "4988"};
// 创建JSONFunction对象, 指明参数列表和函数文本
JSONFunction fun = new JSONFunction(params, myFun) ;
JSONObject jsonObject = new JSONObject();
jsonObject.element("getText", fun.getText()+" ").element("getParams", fun.getParams());
resp.getWriter().write(jsonObject.toString());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
2.3. 编写index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>主页</title>
</head>
<body>
<script>
var myFun = function(x, y, z){return Number(x) + Number(y) + Number(z);};
// 创建XMLHttpRequest对象。XMLHttpRequest对象用于和服务器交换数据。
var xmlHttp = new XMLHttpRequest();
// 在onreadystatechange事件中, 我们规定当服务器响应已做好被处理的准备时所执行的任务。
xmlHttp.onreadystatechange = function()
{
// 请求完成, 服务器返回状态OK。
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
// 获取XML响应
var data = xmlHttp.responseText;
var obj = JSON.parse(data);
document.write(obj.getText + "<br />");
obj.getText = eval("(" + obj.getText + ")");
document.write("计算结果: " + obj.getText(obj.getParams[0], obj.getParams[1], obj.getParams[2]));
}
}
// 使用XMLHttpRequest对象的open()和send()方法, 发送post请求到服务器。
xmlHttp.open("post", "MyJSONFunction.action", true);
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");
xmlHttp.send("myFun="+encodeURIComponent(myFun.toString()));
</script>
</body>
</html>
2.4. 配置web.xml
2.5. 运行项目