@Order(1)
@WebFilter(filterName = "ParamFilter", urlPatterns = "/*")
@Component
public class ReqParamFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
ReqParamWrapper requestParameterWrapper = new ReqParamWrapper(request);
Map<String, Object> extraParams1 = new HashMap<String, Object>();
extraParams1.put("limit", req.getParameter("pageSize"));
requestParameterWrapper.addParameters(extraParams1);
chain.doFilter(requestParameterWrapper, resp);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void destroy() {
Filter.super.destroy();
}
}
public class ReqParamWrapper extends HttpServletRequestWrapper {
private Map<String, String[]> params = new HashMap<String, String[]>();
public ReqParamWrapper(HttpServletRequest request) {
super(request);
this.params.putAll(request.getParameterMap());
}
public ReqParamWrapper(HttpServletRequest request, Map<String, Object> extraParams) {
this(request);
addParameters(extraParams);
}
public void addParameters(Map<String, Object> extraParams) {
for (Map.Entry<String, Object> entry : extraParams.entrySet()) {
addParameter(entry.getKey(), entry.getValue());
}
}
@Override
public Enumeration<String> getParameterNames() {
Set set = params.keySet();
if (set.size() > 0 & set != null) {
return Collections.enumeration(set);
} else {
return super.getParameterNames();
}
}
@Override
public String getParameter(String name) {
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);
}
public void addParameter(String name, Object value) {
if (value != null) {
if (value instanceof String[]) {
params.put(name, (String[]) value);
} else if (value instanceof String) {
params.put(name, new String[]{(String) value});
} else {
params.put(name, new String[]{String.valueOf(value)});
}
}
}
}