Response 重写设置返回值

淡淡的烟草味﹌ 2023-10-08 16:23 150阅读 0赞

前几天因为要实现一个功能,修改response 默认的返回码中的 message,所以重写了一下response,
主要就是这个方法:
public static final void response(HttpServletResponse response, String text)

  1. import cn.dolphin.core.exception.IoRuntimeException;
  2. import cn.dolphin.core.result.ApiResult;
  3. import cn.dolphin.core.util.Utf8Util;
  4. import com.alibaba.fastjson.JSON;
  5. import com.fasterxml.jackson.core.JsonProcessingException;
  6. import com.fasterxml.jackson.databind.ObjectMapper;
  7. import java.io.IOException;
  8. import java.io.PrintWriter;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.ServletOutputStream;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import org.apache.commons.lang3.StringUtils;
  14. import org.springframework.http.HttpStatus;
  15. import org.springframework.web.context.request.RequestContextHolder;
  16. import org.springframework.web.context.request.ServletRequestAttributes;
  17. public class ResponseUtil {
  18. private static final String DOWN_TYPE = "applicatoin/octet-stream";
  19. private static final String DOWN_HEADER1 = "Content-Disposition";
  20. private static final String DOWN_HEADER2 = "attachment; filename=";
  21. private static final String EXCEL_TYPE = "application/vnd.ms-excel;charset=utf-8";
  22. public static final String CACHE_CONTROL = "Cache-Control";
  23. public static final String NO_CACHE = "no-cache";
  24. public static final String PRAGMA = "Pragma";
  25. public static final String EXPIRESS = "Expires";
  26. public static final String FORWARD = "forward:";
  27. public static final String REDIRECT = "redirect:";
  28. private ResponseUtil() {
  29. }
  30. public static HttpServletResponse getResponse() {
  31. return ((ServletRequestAttributes)((ServletRequestAttributes)RequestContextHolder.getRequestAttributes())).getResponse();
  32. }
  33. public static final void setDownloadHeader(HttpServletResponse response, String fileName) {
  34. response.reset();
  35. response.setContentType("applicatoin/octet-stream");
  36. response.setHeader("Content-Disposition", "attachment; filename=" + Utf8Util.utf2iso(fileName));
  37. }
  38. public static final void setNocachHeader(HttpServletResponse response) {
  39. response.reset();
  40. response.setHeader("Pragma", "no-cache");
  41. response.setHeader("Cache-Control", "no-cache");
  42. response.setDateHeader("Expires", 0L);
  43. }
  44. public static final void setExcelHeader(HttpServletResponse response, String fileName) {
  45. response.reset();
  46. response.setContentType("application/vnd.ms-excel;charset=utf-8");
  47. response.setHeader("Content-Disposition", "attachment; filename=" + Utf8Util.utf2iso(fileName));
  48. }
  49. public static final void response(String text) {
  50. response(getResponse(), text);
  51. }
  52. public static final void response(HttpServletResponse response, String text) {
  53. cors(response, (String)null);
  54. response.setStatus(HttpStatus.OK.value());
  55. response.setContentType("application/json");
  56. response.setCharacterEncoding("UTF-8");
  57. PrintWriter writer = null;
  58. try {
  59. writer = response.getWriter();
  60. writer.write(text);
  61. } catch (IOException var11) {
  62. throw new IoRuntimeException("发送JSON响应失败", var11);
  63. } finally {
  64. try {
  65. writer.close();
  66. } catch (Exception var10) {
  67. var10.printStackTrace();
  68. }
  69. }
  70. }
  71. public static final void responseText(String text) {
  72. responseText(getResponse(), text);
  73. }
  74. public static final void responseText(HttpServletResponse response, String text) {
  75. try {
  76. response.getWriter().write(text);
  77. response.getWriter().flush();
  78. } catch (IOException var10) {
  79. throw new IoRuntimeException("发送文字响应失败", var10);
  80. } finally {
  81. try {
  82. response.getWriter().close();
  83. } catch (Exception var9) {
  84. var9.printStackTrace();
  85. }
  86. }
  87. }
  88. public static final String forward(String url) {
  89. return "forward:" + url;
  90. }
  91. public static final void sendForward(HttpServletRequest request, HttpServletResponse response, String url) {
  92. try {
  93. request.getRequestDispatcher(url).forward(request, response);
  94. } catch (IOException | ServletException var4) {
  95. throw new IoRuntimeException("转发失败:url = " + url, var4);
  96. }
  97. }
  98. public static final void sendForward(String url) {
  99. sendForward(RequestUtil.getRequest(), getResponse(), url);
  100. }
  101. public static final String redirect(String url) {
  102. return "redirect:" + url;
  103. }
  104. public static final void sendRedirect(HttpServletResponse response, String url) {
  105. try {
  106. response.sendRedirect(url);
  107. } catch (IOException var3) {
  108. throw new IoRuntimeException("重定向失败:url = " + url, var3);
  109. }
  110. }
  111. public static final void sendRedirect(String url) {
  112. sendRedirect(getResponse(), url);
  113. }
  114. public static final void responseFile(byte[] bs, String fileName) {
  115. responseFile(bs, fileName, getResponse());
  116. }
  117. public static final void responseFile(byte[] bs, String fileName, HttpServletResponse response) {
  118. setDownloadHeader(response, fileName);
  119. ServletOutputStream output = null;
  120. try {
  121. output = response.getOutputStream();
  122. output.write(bs);
  123. output.flush();
  124. } catch (IOException var12) {
  125. throw new IoRuntimeException("发送文件响应失败", var12);
  126. } finally {
  127. try {
  128. output.close();
  129. } catch (Exception var11) {
  130. var11.printStackTrace();
  131. }
  132. }
  133. }
  134. public static final void cors(HttpServletResponse response, String origin) {
  135. if (StringUtils.isBlank(response.getHeader("Access-Control-Allow-Origin"))) {
  136. response.setHeader("Access-Control-Allow-Origin", origin == null ? "*" : origin);
  137. }
  138. }
  139. public static final void sse() {
  140. getResponse().setHeader("X-Accel-Buffering", "no");
  141. }
  142. public static void errorToken(HttpServletResponse httpResponse, String msg) throws IOException {
  143. ApiResult result = ApiResult.error(msg);
  144. String json = JSON.toJSONString(result);
  145. httpResponse.setCharacterEncoding("UTF-8");
  146. httpResponse.setContentType("application/json;charset=UTF-8");
  147. httpResponse.setHeader("Content-type", "application/json;charset=UTF-8");
  148. httpResponse.setHeader("Access-Control-Allow-Origin", "*");
  149. httpResponse.setStatus(401);
  150. httpResponse.getWriter().write(json);
  151. }
  152. public static void errorToken(HttpServletResponse httpResponse, String code, String msg) throws IOException {
  153. ApiResult result = ApiResult.error(code, msg);
  154. String json = JSON.toJSONString(result);
  155. httpResponse.setCharacterEncoding("UTF-8");
  156. httpResponse.setContentType("application/json;charset=UTF-8");
  157. httpResponse.setHeader("Content-type", "application/json;charset=UTF-8");
  158. httpResponse.setHeader("Access-Control-Allow-Origin", "*");
  159. httpResponse.setStatus(401);
  160. httpResponse.getWriter().write(json);
  161. }
  162. public static void errorAuth(HttpServletResponse httpResponse, String code, String msg) throws IOException {
  163. ApiResult result = ApiResult.error(code, msg);
  164. String json = JSON.toJSONString(result);
  165. httpResponse.setCharacterEncoding("UTF-8");
  166. httpResponse.setContentType("application/json;charset=UTF-8");
  167. httpResponse.setHeader("Content-type", "application/json;charset=UTF-8");
  168. httpResponse.setHeader("Access-Control-Allow-Origin", "*");
  169. httpResponse.setStatus(401);
  170. httpResponse.getWriter().write(json);
  171. }
  172. public static void printJSON(HttpServletResponse response, Object object) throws Exception {
  173. response.setCharacterEncoding("UTF-8");
  174. response.setContentType("application/json");
  175. PrintWriter printWriter = response.getWriter();
  176. printWriter.write(JSON.toJSONString(object));
  177. printWriter.flush();
  178. printWriter.close();
  179. }
  180. public static void responseData(HttpServletResponse response, Object resData) throws JsonProcessingException {
  181. ObjectMapper objectMapper = new ObjectMapper();
  182. String jsonString = objectMapper.writeValueAsString(resData);
  183. response.setCharacterEncoding("UTF-8");
  184. response.setContentType("application/json; charset=utf-8");
  185. PrintWriter out = null;
  186. try {
  187. out = response.getWriter();
  188. out.append(jsonString);
  189. } catch (IOException var9) {
  190. var9.printStackTrace();
  191. } finally {
  192. if (out != null) {
  193. out.close();
  194. }
  195. }
  196. }
  197. }

发表评论

表情:
评论列表 (有 0 条评论,150人围观)

还没有评论,来说两句吧...

相关阅读

    相关 设置问题

    `一个简单的方法根据权重,按照比例随机显示对应的广告, 权重值越大,概率越大。 比如有个广告list,广告属性有id,weight,写个通用方法来根据权重显示广告id:` `