RequestUtil.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. /*
  2. * 项目名称:common_utils
  3. * 类名称:RequestUtil
  4. * 包名称:com.joyintech.util
  5. *
  6. * 修改履历:
  7. * 日期 修正者 主要内容
  8. * 2016年07月12日 system 初版做成
  9. *
  10. * Copyright (c) 2016-2017 兆尹科技
  11. */
  12. package com.kmall.common.utils;
  13. import com.kmall.common.Global;
  14. import org.apache.commons.logging.Log;
  15. import org.apache.commons.logging.LogFactory;
  16. import org.json.JSONObject;
  17. import org.springframework.web.context.request.RequestContextHolder;
  18. import org.springframework.web.context.request.ServletRequestAttributes;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.io.BufferedReader;
  21. import java.io.IOException;
  22. import java.io.InputStream;
  23. import java.io.InputStreamReader;
  24. import java.util.Enumeration;
  25. import java.util.HashMap;
  26. import java.util.Iterator;
  27. import java.util.Map;
  28. import java.util.logging.Logger;
  29. /**
  30. * HTTP请求处理工具类
  31. * HTTP请求处理工具类
  32. *
  33. * @author system
  34. * @version 1.0
  35. */
  36. public class RequestUtil {
  37. private static final Log LOGGER = LogFactory.getLog(RequestUtil.class.getName());
  38. /**
  39. * 将request查询参数封装至Map
  40. *
  41. * @param request 请求
  42. * @param printLog 是否打印日志
  43. * @return 参数Map
  44. */
  45. public static Map<String, Object> getParameters(HttpServletRequest request,
  46. boolean printLog) {
  47. Enumeration<String> enume = request.getParameterNames();
  48. Map<String, Object> map = new HashMap<String, Object>();
  49. while (enume.hasMoreElements()) {
  50. String key = enume.nextElement();
  51. String value = request.getParameter(key);
  52. map.put(key, value);
  53. if (printLog) {
  54. LOGGER.info(key + "==>" + value);
  55. }
  56. }
  57. if (map.get(Global.SORT_ORDER) != null) {
  58. map.put(Global.SORT_ORDER, "asc");
  59. }
  60. return map;
  61. }
  62. /**
  63. * 将request查询参数封装至Map
  64. *
  65. * @param request 请求
  66. * @return 参数Map
  67. */
  68. public static Map<String, Object> getParameters(HttpServletRequest request) {
  69. return getParameters(request, false);
  70. }
  71. /**
  72. * 获取请求方IP
  73. *
  74. * @param request 请求
  75. * @return 客户端Ip
  76. */
  77. public static String getClientIp(HttpServletRequest request) {
  78. String xff = request.getHeader("x-forwarded-for");
  79. if (xff == null) {
  80. return request.getRemoteAddr();
  81. }
  82. return xff;
  83. }
  84. /**
  85. * 主要功能:获取请求方IP
  86. * 注意事项:无
  87. *
  88. * @param request 请求
  89. * @return String IP
  90. */
  91. public static String getIpAddrByRequest(HttpServletRequest request) {
  92. String ip = request.getHeader("x-forwarded-for");
  93. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  94. ip = request.getHeader("Proxy-Client-IP");
  95. }
  96. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  97. ip = request.getHeader("WL-Proxy-Client-IP");
  98. }
  99. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  100. ip = request.getRemoteAddr();
  101. }
  102. return ip;
  103. }
  104. /**
  105. * 获取完整的请求URL
  106. *
  107. * @param request 请求
  108. * @return URL
  109. */
  110. public static String getRequestUrl(HttpServletRequest request) {
  111. return request.getRequestURL().toString();
  112. }
  113. /**
  114. * 主要功能:获取request
  115. * 注意事项:无
  116. *
  117. * @return HttpServletRequest
  118. */
  119. public static HttpServletRequest getCurrentRequest() {
  120. return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  121. }
  122. /**
  123. * 主要功能:获取前端请求并转换map
  124. * 注意事项:无
  125. *
  126. * @param request 请求
  127. * @return 参数map
  128. */
  129. @SuppressWarnings("unchecked")
  130. public static Map<String, Object> getBody(HttpServletRequest request) {
  131. // 获取前台参数
  132. String body = null;
  133. StringBuilder stringBuilder = new StringBuilder();
  134. BufferedReader bufferedReader = null;
  135. try {
  136. InputStream inputStream = request.getInputStream();
  137. if (inputStream != null) {
  138. bufferedReader = new BufferedReader(new InputStreamReader(
  139. inputStream));
  140. char[] charBuffer = new char[128];
  141. int bytesRead = -1;
  142. while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
  143. stringBuilder.append(charBuffer, 0, bytesRead);
  144. }
  145. } else {
  146. stringBuilder.append("");
  147. }
  148. } catch (IOException ex) {
  149. } finally {
  150. if (bufferedReader != null) {
  151. try {
  152. bufferedReader.close();
  153. } catch (IOException ex) {
  154. }
  155. }
  156. }
  157. body = stringBuilder.toString();
  158. // 转换成json对象
  159. JSONObject json = new JSONObject(body);
  160. // 转化成map合适
  161. Map<String, Object> paramers = new HashMap<String, Object>();
  162. Iterator<String> keys = json.keys();
  163. String key;
  164. while (keys.hasNext()) {
  165. key = keys.next();
  166. paramers.put(key, json.get(key));
  167. }
  168. return paramers;
  169. }
  170. }