servlet返回JSON数据总结

  • 返回字符串,因为字符串要返回json数据类型,所以我们要写成
    String json = “{“ClientId”:196401,“ClinetName”:“teller”}”;
    如果后台不处理成json数据,那么需要在前端回调函数中解析为json数据,var info = JSON.parse(data);
public class ClientServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("application/json;charset=utf-8");//指定返回的格式为JSON格式
		resp.setCharacterEncoding("UTF-8");//setContentType与setCharacterEncoding的顺序不能调换,否则无法解决中文乱码的问题
		//返回json用输出流进行输出
		PrintWriter out = resp.getWriter();
        out.write("[{\"ClientId\":196401,\"ClinetName\":\"teller\"}]");
        out.flush();
        out.close();
	}
	 
}
  • 返回对象类型
    因为返回的是对象类型,所以我们需要第三方jar包帮我们把对象解析为json数据类型,第三方jar包有很多,例如FastJSON、Gson和Jackson,因为jackson的效率比较高,我选择用jackson。
public class ClientServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("application/json;charset=utf-8");// 指定返回的格式为JSON格式
		resp.setCharacterEncoding("UTF-8");// setContentType与setCharacterEncoding的顺序不能调换,否则无法解决中文乱码的问题
		Client client = new Client(196204, "teller");
		//要用jackson2.1.5版本,否则出错
		PrintWriter out = resp.getWriter();
		ObjectMapper mapper = new ObjectMapper();
		String json = mapper.writeValueAsString(client);
		//System.out.println(json);
		out.write(json);
		out.flush();
		out.close();
	}
}
  • 页面发送的ajax请求如下:

你可能感兴趣的:(Java,Web)