1.servlet接收前端通过ajax传送的json字符串时是使用流的形式。
2,servlet将对象发送给前端也是以流的形式。
3,对于前端接收的数据格式进行封装,进行统一类型的发送
数据类的封装:
/**
* 定义一个实体对象用来封装json数据后台返回值
*/
public class Resultdata {
private Boolean flag; //布尔值类型标志
private String message; //响应前端的信息
private Object data; //响应对象
public Boolean getFlag() {
return flag;
}
public void setFlag(Boolean flag) {
this.flag = flag;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
/**
* 返回结果的封装处理,
*/
public class ResultdataUtil {
//两个返回的状态
private static final Boolean SUCCESS = true;
private static final Boolean Fail = false;
//成功与失败时的消息
private static final String msg1 = "成功";
private static final String msg2 = "失败";
private static Resultdata resultdata;
//成功
public Resultdata getSuccessResult() {
resultdata=new Resultdata();
resultdata.setMessage(msg1);
resultdata.setFlag(SUCCESS);
return resultdata;
}
//成功,附带自定义数据
public Resultdata getSuccessResult(String message) {
resultdata=new Resultdata();
resultdata.setMessage(message);
resultdata.setFlag(SUCCESS);
return resultdata;
}
//成功,附带额外数据
public Resultdata getSuccessResult(Object data) {
resultdata=new Resultdata();
resultdata.setData(data);
resultdata.setMessage(msg1);
resultdata.setFlag(SUCCESS);
return resultdata;
}
//成功,自定义消息及数据
public Resultdata getSuccessResult(String message,Object data) {
resultdata=new Resultdata();
resultdata.setData(data);
resultdata.setMessage(message);
resultdata.setFlag(SUCCESS);
return resultdata;
}
//失败
public Resultdata getFailResult() {
resultdata=new Resultdata();
resultdata.setMessage(msg2);
resultdata.setFlag(Fail);
return resultdata;
}
//失败,附带消息
public Resultdata getFailResult(String message) {
resultdata=new Resultdata();
resultdata.setMessage(message);
resultdata.setFlag(Fail);
return resultdata;
}
//失败,自定义消息及数据
public Resultdata getFailResult(String message, Object data) {
resultdata=new Resultdata();
resultdata.setData(data);
resultdata.setMessage(message);
resultdata.setFlag(Fail);
return resultdata;
}
//自定义创建
public Resultdata getFreeResult(Boolean code, String message, Object data) {
resultdata=new Resultdata();
resultdata.setData(data);
resultdata.setMessage(message);
resultdata.setFlag(code);
return resultdata;
}
}
servlet接收发送数据的封装:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import mmwang.entity.Users;
public class SendUtil {
//读取前端发送的json数据
public static StringBuffer Readjson(HttpServletRequest request) throws UnsupportedEncodingException, IOException {
//接受前台发送的数据,通过流的形式接收数据
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8")); //将数据使用流进行传递
StringBuffer strb = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) { //遍历数据
strb = strb.append(line); //数据暂存StringBuffer
}
return strb;
}
//发送无返回值的json数据给前端
public static void Sendjson(HttpServletResponse response, Boolean flag) throws IOException {
//通过流的形式发送json数据
PrintWriter out = response.getWriter();
//对数据封装发送
ResultdataUtil resultdataUtil=new ResultdataUtil();
Resultdata successResult ;
if(flag==true) {//添加成功
successResult= resultdataUtil.getSuccessResult();
}else {//添加失败
successResult = resultdataUtil.getFailResult();
}
String ss =JSON.toJSONString(successResult);
System.out.println("传到前端:"+ss);
out.write(ss);//通过流的形式响应
}
//发送含有返回值的json数据给前端
public static void SendObj(HttpServletResponse response,Object obj) throws IOException {
//通过流的形式发送json数据
PrintWriter out = response.getWriter();
//对数据封装发送
ResultdataUtil resultdataUtil=new ResultdataUtil();
Resultdata successResult = resultdataUtil.getSuccessResult(obj);
String ss =JSON.toJSONString(successResult);
System.out.println("传到前端:"+ss);
out.write(ss);//通过流的形式响应
}
}
调用示例:
/**
* 添加投诉信息
*/
public class AddComplain extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StringBuffer strb = SendUtil.Readjson(request);
//设置之后前端接收到的是一个对象
response.setContentType("application/json;charset=UTF-8");
System.out.println("接受数据为"+strb);
//将json字串转成对象
Complain o= JSON.parseObject(strb.toString(),Complain.class);
IUserService iUserService=new UserServiceImp();
Boolean flag = iUserService.AddComplain(o);
SendUtil.Sendjson(response, flag);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}