/* * 项目名称:common_utils * 类名称:RequestUtil * 包名称:com.joyintech.util * * 修改履历: * 日期 修正者 主要内容 * 2016年07月12日 system 初版做成 * * Copyright (c) 2016-2017 兆尹科技 */ package com.kmall.common.utils; import com.kmall.common.Global; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.json.JSONObject; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.logging.Logger; /** * HTTP请求处理工具类 * HTTP请求处理工具类 * * @author system * @version 1.0 */ public class RequestUtil { private static final Log LOGGER = LogFactory.getLog(RequestUtil.class.getName()); /** * 将request查询参数封装至Map * * @param request 请求 * @param printLog 是否打印日志 * @return 参数Map */ public static Map getParameters(HttpServletRequest request, boolean printLog) { Enumeration enume = request.getParameterNames(); Map map = new HashMap(); while (enume.hasMoreElements()) { String key = enume.nextElement(); String value = request.getParameter(key); map.put(key, value); if (printLog) { LOGGER.info(key + "==>" + value); } } if (map.get(Global.SORT_ORDER) != null) { map.put(Global.SORT_ORDER, "asc"); } return map; } /** * 将request查询参数封装至Map * * @param request 请求 * @return 参数Map */ public static Map getParameters(HttpServletRequest request) { return getParameters(request, false); } /** * 获取请求方IP * * @param request 请求 * @return 客户端Ip */ public static String getClientIp(HttpServletRequest request) { String xff = request.getHeader("x-forwarded-for"); if (xff == null) { return request.getRemoteAddr(); } return xff; } /** * 主要功能:获取请求方IP * 注意事项:无 * * @param request 请求 * @return String IP */ public static String getIpAddrByRequest(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } /** * 获取完整的请求URL * * @param request 请求 * @return URL */ public static String getRequestUrl(HttpServletRequest request) { return request.getRequestURL().toString(); } /** * 主要功能:获取request * 注意事项:无 * * @return HttpServletRequest */ public static HttpServletRequest getCurrentRequest() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); } /** * 主要功能:获取前端请求并转换map * 注意事项:无 * * @param request 请求 * @return 参数map */ @SuppressWarnings("unchecked") public static Map getBody(HttpServletRequest request) { // 获取前台参数 String body = null; StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = null; try { InputStream inputStream = request.getInputStream(); if (inputStream != null) { bufferedReader = new BufferedReader(new InputStreamReader( inputStream)); char[] charBuffer = new char[128]; int bytesRead = -1; while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { stringBuilder.append(charBuffer, 0, bytesRead); } } else { stringBuilder.append(""); } } catch (IOException ex) { } finally { if (bufferedReader != null) { try { bufferedReader.close(); } catch (IOException ex) { } } } body = stringBuilder.toString(); // 转换成json对象 JSONObject json = new JSONObject(body); // 转化成map合适 Map paramers = new HashMap(); Iterator keys = json.keys(); String key; while (keys.hasNext()) { key = keys.next(); paramers.put(key, json.get(key)); } return paramers; } }