package com.panzhihua.zuul.filters; import java.util.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 组装request参数 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2020-11-26 10:32 **/ public class SafeboxRequestWrapper extends HttpServletRequestWrapper { private Map headerMap = new HashMap(); private Map params = new HashMap(); public SafeboxRequestWrapper(HttpServletRequest request) { super(request); // 将参数表,赋予给当前的Map以便于持有request中的参数 this.params.putAll(request.getParameterMap()); } public void addHeader(String name, String value) { headerMap.put(name, value); } @Override public String getHeader(String name) { String headerValue = super.getHeader(name); if (headerMap.containsKey(name)) { headerValue = headerMap.get(name); } return headerValue; } @Override public Enumeration getHeaderNames() { List names = Collections.list(super.getHeaderNames()); for (String name : headerMap.keySet()) { names.add(name); } return Collections.enumeration(names); } @Override public Enumeration getHeaders(String name) { List values = Collections.list(super.getHeaders(name)); if (headerMap.containsKey(name)) { values.add(headerMap.get(name)); } return Collections.enumeration(values); } @Override public String getParameter(String name) {// 重写getParameter,代表参数从当前类中的map获取 String[] values = params.get(name); if (values == null || values.length == 0) { return null; } return values[0]; } @Override public String[] getParameterValues(String name) {// 同上 return params.get(name); } }