ServletUtils.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package cn.iocoder.dashboard.util.servlet;
  2. import cn.hutool.core.io.IoUtil;
  3. import cn.hutool.extra.servlet.ServletUtil;
  4. import cn.iocoder.dashboard.util.json.JSONUtils;
  5. import org.springframework.http.MediaType;
  6. import org.springframework.web.context.request.RequestAttributes;
  7. import org.springframework.web.context.request.RequestContextHolder;
  8. import org.springframework.web.context.request.ServletRequestAttributes;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import java.io.IOException;
  12. import java.net.URLEncoder;
  13. /**
  14. * 客户端工具类
  15. *
  16. * @author 芋道源码
  17. */
  18. public class ServletUtils {
  19. /**
  20. * 返回 JSON 字符串
  21. *
  22. * @param response 响应
  23. * @param object 对象,会序列化成 JSON 字符串
  24. */
  25. @SuppressWarnings("deprecation") // 必须使用 APPLICATION_JSON_UTF8_VALUE,否则会乱码
  26. public static void writeJSON(HttpServletResponse response, Object object) {
  27. String content = JSONUtils.toJSONString(object);
  28. ServletUtil.write(response, content, MediaType.APPLICATION_JSON_UTF8_VALUE);
  29. }
  30. /**
  31. * 返回附件
  32. *
  33. * @param response 响应
  34. * @param filename 文件名
  35. * @param content 附件内容
  36. * @throws IOException
  37. */
  38. public static void writeAttachment(HttpServletResponse response, String filename, byte[] content) throws IOException {
  39. // 设置 header 和 contentType
  40. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
  41. response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
  42. // 输出附件
  43. IoUtil.write(response.getOutputStream(), false, content);
  44. }
  45. /**
  46. * @param request 请求
  47. * @return ua
  48. */
  49. public static String getUserAgent(HttpServletRequest request) {
  50. String ua = request.getHeader("User-Agent");
  51. return ua != null ? ua : "";
  52. }
  53. /**
  54. * 获得请求
  55. *
  56. * @return HttpServletRequest
  57. */
  58. public static HttpServletRequest getRequest() {
  59. RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
  60. if (!(requestAttributes instanceof ServletRequestAttributes)) {
  61. return null;
  62. }
  63. return ((ServletRequestAttributes) requestAttributes).getRequest();
  64. }
  65. public static String getUserAgent() {
  66. HttpServletRequest request = getRequest();
  67. if (request == null) {
  68. return null;
  69. }
  70. return getUserAgent(request);
  71. }
  72. public static String getClientIP() {
  73. HttpServletRequest request = getRequest();
  74. if (request == null) {
  75. return null;
  76. }
  77. return ServletUtil.getClientIP(request);
  78. }
  79. }