要使用json,需要导入fastjson-1.1.34.jar,官网下载地址:https://sourceforge.net/projects/fastjson/files/
封装一个处理http请求获取json参数的工具类:
package test;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
public class HttpGetJson {
public static JSONObject getJson(HttpServletRequest request){
StringBuilder result = new StringBuilder();
BufferedReader in = null;
try{
in = new BufferedReader(new InputStreamReader(request.getInputStream(),StandardCharsets.UTF_8));
String line;
while((line = in.readLine()) != null){
result.append(line);
}
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(in != null){
in.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
return (JSONObject) JSONObject.parse(result.toString());
}
}
在Servlet 的doGet或者doPost方法中获取request的json数据:
JSONObject data = HttpGetJson.getJson(request);
if(data != null) {
//业务处理,例如:System.out.println("id-->" + data.get("id"));
//利用get就能从json取出对应的键值对。
}
在处理完业务之后,如果需要返回json:
JSONObject res = new JSONObject();
res.put("code",200);
res.put("id",id);
response.getWriter().write(String.valueOf(res));
这样Servlet就可以从请求中获取json并返回json了。
doPost代码示例:
package test;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import com.alibaba.fastjson.JSONObject;
@WebServlet("/Demo")
public class Demo extends HttpServlet {
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {
response.setContentType("application/json;charset=utf-8");
//获取json数据
JSONObject data = HttpGetJson.getJson(request);
Object id = null;
Object name = null;
Object status = null;
int flag = 500;
if(data != null) {
id = data.get("id");
name = data.get("name");
status = data.get("status");
flag = 200;
}
//返回json数据
JSONObject res = new JSONObject();
res.put("code",flag);
res.put("id",id);
res.put("name",name);
res.put("status",status);
response.getWriter().write(String.valueOf(res));
}
}