java response 返回json_java 接口请求返回通用json

该博客展示了如何在Java中创建一个响应类`ResponseBase`,用于封装HTTP响应的JSON数据。它包含了状态码、错误信息、服务器时间戳以及泛型数据体。在`contlistAES`方法中,解析请求、处理业务逻辑、构造响应对象,并通过`AjaxUtil`类将JSON响应写入客户端,考虑了数据加密和错误处理的情况。
摘要由CSDN通过智能技术生成

public class BaseResponseBody {

// 不能添加属性 仅做泛型使用

}

public class ResponseBase {

private Integer msgCode ;

private String msgString;

private long serverTime;

private T body;

public ResponseBase(){

super();

this.msgCode = Integer.parseInt(MsgConstants.RESULT_200[0]);

this.msgString = MsgConstants.RESULT_200[1];

this.serverTime = System.currentTimeMillis();

}

public ResponseBase(T body){

this();

this.body = body;

}

public ResponseBase(String msgCode, String msgString){

super();

if(NumberUtils.isDigits(msgCode)){

this.msgCode = Integer.parseInt(msgCode);

}else{

this.msgCode = Integer.parseInt(MsgConstants.RESULT_502[0]);

}

this.msgString = msgString;

this.serverTime = System.currentTimeMillis();

}

public Integer getMsgCode() {

return msgCode;

}

public String getMsgString() {

return msgString;

}

public long getServerTime() {

return serverTime;

}

public T getBody() {

return body;

}

public void setMsgCode(Integer msgCode) {

this.msgCode = msgCode;

}

public void setMsgString(String msgString) {

this.msgString = msgString;

}

public void setServerTime(long serverTime) {

this.serverTime = serverTime;

}

public void setBody(T body) {

this.body = body;

}

}

public class MsgConstants {

/******************** 平台调用返回失败返回代码和异常描述 ***********************/

public final static String[] RESULT_200 = { "200", "SUCCESS" };

}

@RequestMapping(value = "/contlistAES", method = RequestMethod.POST)

@ResponseBody

public void contlistAES(HttpServletRequest req, HttpServletResponse rsp) {

ContactListRequest request = null;

ResponseBase response = null;

try {

// 解析请求参数并解密

String jsonParams=AppInterFaceUtil.getInputStreamParameter(req);

request = JSON.parseObject(jsonParams, ContactListRequest.class);

if (null==request) {

throw new BaseException(MsgConstants.RESULT_403[0], MsgConstants.RESULT_403[1]);

}

response = new ResponseBase();

//查询数据

SubNodesResp info = departmentService.getChildFromClient(request.getDeptId(),request.getTs());

response.setBody(info);

} catch (BaseException e) {

response = new ResponseBase(e.getCode(), e.getMessage());

} catch (Exception e) {

if (StringUtils.isBlank(e.getMessage())) {

response = new ResponseBase(MsgConstants.RESULT_502[0], MsgConstants.RESULT_502[1]);

} else {

response = new ResponseBase(MsgConstants.RESULT_502[0], e.getMessage());

}

e.printStackTrace();

}

//返回数据

String data = JSON.toJSONString(response, SerializerFeature.WriteMapNullValue);

AjaxUtil.writeClient(data, req, rsp);

}

public class AjaxUtil {

private static Logger logger = LoggerFactory.getLogger(AjaxUtil.class);

/**

* ajax 请求返回的数据

* @param data

* @param req

* @param resp

*/

public static void sendMessage(String data,HttpServletResponse resp){

PrintWriter printWriter = null;

try {

printWriter = resp.getWriter();

printWriter.print(data);

} catch (IOException ex) {

logger.error("Ajax send "+ data + " , Exception :" + ex);

} finally {

if (null != printWriter) {

printWriter.flush();

printWriter.close();

}

}

}

/**

* 封装easyui表格数据

* @param list 列表数据

* @param total 页数

* @return

*/

public static Map getPageListDate(List> list,int total){

if (list != null) {

Map result = new HashMap();

result.put("total", total);

result.put("rows", list);

return result;// 这个就是你在ajax成功的时候返回的数据,我在那边进行了一个对象封装

}

return null;

}

/**

* ajax 请求返回的数据

* @param data

* @param req

* @param resp

*/

public static void writeMessage(String data,HttpServletResponse resp){

resp.setHeader("Cache-Control", "no-cache");

resp.setContentType("text/json;charset=UTF-8");

resp.setCharacterEncoding("UTF-8");

PrintWriter printWriter = null;

try {

printWriter = resp.getWriter();

printWriter.write(data);

} catch (IOException ex) {

logger.error("Ajax send "+ data + " , Exception :" + ex);

} finally {

if (null != printWriter) {

printWriter.flush();

printWriter.close();

}

}

}

/**

* ajax 请求返回的数据

* @param data

* @param req

* @param resp

*/

public static void writeClient(String data,HttpServletRequest request,HttpServletResponse response){

PrintWriter printWriter = null;

try {

if(request.getRequestURI().endsWith("AES")){

data = AESUtil.encrypt(data);

}

response.setHeader("Cache-Control", "no-cache");

response.setContentType("text/json;charset=UTF-8");

response.setCharacterEncoding("UTF-8");

printWriter = response.getWriter();

printWriter.write(data);

} catch (IOException ex) {

logger.error("Ajax send "+ data + " , Exception :" + ex);

} finally {

if (null != printWriter) {

//printWriter.flush();

//printWriter.close();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值