ServletUtils.java 3.0 KB

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