使用servlet与前端传送json数据的工具类封装,抽取方法

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);
	}

}

猜你喜欢

转载自blog.csdn.net/qq_38735996/article/details/89402476
今日推荐