package com.vincent.rsf.server.common.interceptor.severlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import java.util.*; public class ParameterAddableRequest extends HttpServletRequestWrapper { private final Map additionalParams = new HashMap<>(); public ParameterAddableRequest(HttpServletRequest request) { super(request); } /** * 添加新参数 * @param name 参数名 * @param value 参数值 */ public void addParameter(String name, String value) { additionalParams.put(name, new String[]{value}); } /** * 添加新参数(多值) * @param name 参数名 * @param values 参数值数组 */ public void addParameter(String name, String[] values) { additionalParams.put(name, values); } @Override public String getParameter(String name) { if (additionalParams.containsKey(name)) { return additionalParams.get(name)[0]; } return super.getParameter(name); } @Override public Map getParameterMap() { Map combinedMap = new HashMap<>(super.getParameterMap()); combinedMap.putAll(additionalParams); return Collections.unmodifiableMap(combinedMap); } @Override public Enumeration getParameterNames() { Set names = new HashSet<>(Collections.list(super.getParameterNames())); names.addAll(additionalParams.keySet()); return Collections.enumeration(names); } @Override public String[] getParameterValues(String name) { if (additionalParams.containsKey(name)) { return additionalParams.get(name); } return super.getParameterValues(name); } }