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

  • 相关阅读:
    Mysql 完整性约束
    Mysql 多表查询
    Mysql 数据表记录操作
    Mysql 数据库表操作
    Mysql 数据库操作
    sql语句规范
    Python IO模型
    csu-2018年11月月赛Round2-div1题解
    csu-2018年11月月赛Round2-div2题解
    Github新手使用学习详解
  • 原文地址:https://www.cnblogs.com/oushiyang/p/9760872.html
Copyright © 2011-2022 走看看