Spring有一个
linkedCaseInsensitiveMap您可以用来执行不区分大小写的查找的功能。
一个实现可能如下所示。
package biz.deinum.web.filter;import org.springframework.util.linkedCaseInsensitiveMap;import org.springframework.web.filter.OncePerRequestFilter;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.Collections;import java.util.Enumeration;import java.util.Map;public class CaseInsensitiveRequestFilter extends oncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { filterChain.doFilter(new CaseInsensitiveHttpServletRequestWrapper(request), response); } private static class CaseInsensitiveHttpServletRequestWrapper extends HttpServletRequestWrapper { private final linkedCaseInsensitiveMap<String[]> params = new linkedCaseInsensitiveMap<>(); private CaseInsensitiveHttpServletRequestWrapper(HttpServletRequest request) { super(request); params.putAll(request.getParameterMap()); } @Override public String getParameter(String name) { String[] values = getParameterValues(name); if (values == null || values.length == 0) { return null; } return values[0]; } @Override public Map<String, String[]> getParameterMap() { return Collections.unmodifiableMap(this.params); } @Override public Enumeration<String> getParameterNames() { return Collections.enumeration(this.params.keySet()); } @Override public String[] getParameterValues(String name) { return (String[])params.get(name); } }}


