客户端JSP HTML 请求
服务端处理返回客户端
客户端解析返回值
配置文件:
1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<title>My JSP 'JasonTest.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="json2.js"></script>
<script type="text/javascript">
function User(userId, name)
{
this.userId = userId;
this.name = name;
}
/**
* 获取工程路径
* 我X,12月了,今年最后一个月了,加油!!!
*
* @author ZengWenFeng
* @date 2015.12.01
*/
function getRootPath()
{
//获取当前网址,如: http://127.0.0.1:8089/PrjJsp/zengwenfeng.jsp
var curWwwPath = window.document.location.href;
//获取主机地址之后的目录,如: uimcardprj/share/meun.jsp
var pathName = window.document.location.pathname;
var pos = curWwwPath.indexOf(pathName);
//获取主机地址,如: http://localhost:8083
var localhostPath = curWwwPath.substring(0, pos);
//获取带"/"的项目名,如:/uimcardprj
var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);
return (localhostPath + projectName);
}
function requestServlet()
{
// var urlStr = "http://127.0.0.1:8089/PrjJsp/JasonServlet";
var user = JSON.stringify(new User(101,"zengwenfeng"));
var urlStr = getRootPath() + "/JasonServlet";
// alert(getRootPath());
// alert(urlStr);
//调用JQuery提供的Ajax方法
$.ajax(
{
type:"POST",
url:urlStr,
data:user,
dataType: "jason",//此处要设置成jason
success: callback//回调函数
});
}
function callback(jasonObj)
{
var str = jasonObj;
var obj = JSON.parse(str);//调用Json2.js中提供的JSON解析器来解析成JSONObject
alert(obj.errNum);
}
function c()
{
requestServlet();
}
</script>
</head>
<body>
<input type="button" onclick="c()" value="button">
</body>
</html>
JasonServlet.java
package json;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
/**
* E:\PRJ_J2EE\PrjJsp\WebContent\json\1.jsp
*
* @author ZengWenFeng
* @date 2015.09.02
*/
public class JasonServlet extends HttpServlet
{
private static final long serialVersionUID = -689996185851434889L;
/**
* Constructor of the object.
*/
public JasonServlet()
{
super();
}
public void destroy()
{
super.destroy(); // Just puts "destroy" string in log
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request, response);
}
/**
* 解析客户端的JsonObject
*
* 于谦
* 我昔少年时,垂髫发如漆。
* 锐意取功名,辛苦事纸笔。
*
* 千锤万凿出深山,烈火焚烧若等闲。
* 粉身碎骨全不怕,要留清白在人间。
*
* @author ZengWenFeng
* @date 2015.09.02
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
try
{
// 获取requestContext
String requestContext = readJSONString(request);
// 转换JSONObject
JSONObject jsonObj = JSONObject.fromObject(requestContext);//转换成JSONObject
// 获取对象属性
System.out.println(jsonObj.getInt("userId"));//得到JSONObject的userId值
System.out.println(jsonObj.getString("name"));
// 返回客户端对象
JSONObject resultJSON = new JSONObject();//构建一个JSONObject
resultJSON.accumulate("errNum", 1);
resultJSON.accumulate("errInfo", "ZengWenFeng_Success!!!");
//
response.setContentType("application/x-json");//需要设置ContentType 为"application/x-json"
PrintWriter out = response.getWriter();
out.println(resultJSON.toString());//向客户端输出JSONObject字符串
out.flush();
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occure
*/
public void init() throws ServletException
{
// Put your code here
}
/**
*
*
* @param request
* @return
*/
public String readJSONString(HttpServletRequest request)
{
StringBuilder str = new StringBuilder();
String line = null;
try
{
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
{
str.append(line);
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
return str.toString();
}
}