zoukankan      html  css  js  c++  java
  • 如何在过滤器里面修改header的参数

    import java.io.IOException;
    import java.util.Collections;
    import java.util.Enumeration;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;
    
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.filter.OncePerRequestFilter;
    
    import com.loan.common.CommUtil;
    /**
     * 过滤器为了往header里面塞参数
     * @author Administrator
     *
     */
    public class ModifyParametersFilter extends OncePerRequestFilter{
    
        @Override
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
                throws ServletException, IOException {
            ModifyParametersWrapper mParametersWrapper = new ModifyParametersWrapper(request);
            mParametersWrapper.putHeader("uuid",CommUtil.getUUID());
            filterChain.doFilter(mParametersWrapper, response);
        }
         /**
         * 继承HttpServletRequestWrapper,创建装饰类,以达到修改HttpServletRequest参数的目的
         */
        private class ModifyParametersWrapper extends HttpServletRequestWrapper {
            private final Map<String, String> customHeaders;
    
            ModifyParametersWrapper(HttpServletRequest request) {
                super(request);
                this.customHeaders = new HashMap<>();
            }
    
            void putHeader(String name, String value){
                this.customHeaders.put(name, value);
            }
    
            public String getHeader(String name) {
                // check the custom headers first
                String headerValue = customHeaders.get(name);
    
                if (headerValue != null){
                    return headerValue;
                }
                // else return from into the original wrapped object
                return ((HttpServletRequest) getRequest()).getHeader(name);
            }
    
            public Enumeration<String> getHeaderNames() {
                // create a set of the custom header names
                Set<String> set = new HashSet<>(customHeaders.keySet());
    
                // now add the headers from the wrapped request object
                Enumeration<String> e = ((HttpServletRequest) getRequest()).getHeaderNames();
                while (e.hasMoreElements()) {
                    // add the names of the request headers into the list
                    String n = e.nextElement();
                    set.add(n);
                }
    
                // create an enumeration from the set and return
                return Collections.enumeration(set);
            }
        }
    }

    参考自 https://www.cnblogs.com/007sx/p/7049514.html

  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/oushiyang/p/9760872.html
Copyright © 2011-2022 走看看