zoukankan      html  css  js  c++  java
  • HttpServletRequest 在Filter中添加header

    1、创建Wrapper

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    import java.util.*;
     
    /**
     * [ Filter请求拦截中添加header属性 ]
     *
     * @author Love丶TG
     * @version 1.0.0
     * @create 2019 年 11 月 22 日 11:44
     */
    public class HeaderMapRequestWrapper extends HttpServletRequestWrapper {
     
        public HeaderMapRequestWrapper(HttpServletRequest request) {
            super(request);
        }
     
        private Map<String, String> headerMap = new HashMap<String, String>();
     
        public void addHeader(String name, String value) {
            headerMap.put(name, value);
        }
     
        @Override
        public String getHeader(String name) {
            String headerValue = super.getHeader(name);
            if (headerMap.containsKey(name)) {
                headerValue = headerMap.get(name);
            }
            return headerValue;
        }
     
        @Override
        public Enumeration<String> getHeaderNames() {
            List<String> names = Collections.list(super.getHeaderNames());
            for (String name : headerMap.keySet()) {
                names.add(name);
            }
            return Collections.enumeration(names);
        }
     
        @Override
        public Enumeration<String> getHeaders(String name) {
            List<String> values = Collections.list(super.getHeaders(name));
            if (headerMap.containsKey(name)) {
                values.add(headerMap.get(name));
            }
            return Collections.enumeration(values);
        }
    }

    2、通过上面这个类,然后简单在Filter中New对象使用即可。

    public class RemoteAddrFilter implements Filter {

    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest) request;
    HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(req);
    //获得请求参数中的token值
    String token = request.getParamter("token");
    if(!StringUtils.isEntry(token)){
    //如果请求中带有这个参数,则进行过滤加一个header头
    requestWrapper.addHeader("tokenr", token);
    chain.doFilter(requestWrapper, response); // Goes to default servlet.
    }
    chain.doFilter(request, response); // Goes to default servlet.

    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

  • 相关阅读:
    HashMap遍历的两种方式
    抽象类和接口的区别是什么
    “用户、组或角色'XXX'在当前数据库中已存在”问题
    FCKEditor在IE10下的不兼容问题解决方法
    ADODB.Connection 错误 '800a0e7a' 未找到提供程序。该程序可能未正确安装。解决方法!
    ASP.NET中Url重写后,打不开真正的Html页面
    运用正则表达式在Asp中过滤Html标签代码的四种不同方法
    静态页分页功能js代码
    .NET生成静态页面的方案总结
    禁止ViewState的3种解决方法
  • 原文地址:https://www.cnblogs.com/panchanggui/p/14987593.html
Copyright © 2011-2022 走看看