package com.hyc.wechat.util;
import com.alibaba.fastjson.JSON;
import com.hyc.wechat.controller.constant.RequestMethod;
import com.hyc.wechat.model.dto.ServiceResult;
import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 控制层工具类,提供了一些静态方法用于控制层操作
*
* @author 黄钰朝
* @program wechat
* @description 这个类包含了一些静态方法,用于在控制层处理请求和响应,例如将请求方法转换为枚举类型,以及将服务结果转换为JSON格式并返回给客户端
* @date 2019-05-02 17:35
*/
public class ControllerUtils {
/**
* 将请求中的method参数值转换为对应的RequestMethod枚举项
*
* @param name 请求中的method参数值,通常是GET、POST等HTTP方法
* @return 返回对应的RequestMethod枚举项,如果未找到匹配项,则返回RequestMethod.INVALID_REQUEST
* @name valueOf
* @notice 此方法不处理null值,如果传入的name为null,将会抛出NullPointerException
* @author 黄钰朝
* @date 2019/4/20
* @see RequestMethod
*/
public static RequestMethod valueOf(String name) {
try {
name = name.toUpperCase().replaceAll("\\.", "_");
return RequestMethod.valueOf(name);
} catch (IllegalArgumentException | NullPointerException e) {
// 如果捕获到异常,说明请求参数没有匹配到任何服务,为无效请求
e.printStackTrace();
return RequestMethod.INVALID_REQUEST;
}
}
/**
* 将服务结果转换为JSON格式,并将其写入HTTP响应中返回给客户端
*
* @param resp HTTP响应对象,用于向客户端发送数据
* @param result 服务结果对象,包含状态码、消息和数据
* @throws IOException 如果在写入响应时发生I/O错误
* @name returnJsonObject
* @notice 此方法会关闭响应的输出流,调用后不应再对响应对象进行写操作
* @author 黄钰朝
* @date 2019/5/6
*/
public static void returnJsonObject(HttpServletResponse resp, ServiceResult result) throws IOException {
JSON json = (JSON) JSON.toJSON(result);
resp.getWriter().write(json.toJSONString());
Logger logger = Logger.getLogger(ControllerUtils.class);
logger.info(json.toJSONString());
}
}