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