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 {

    }

  • 相关阅读:
    Maven相关
    Git学习:如何登陆以及创建本地代码仓库、并提交本地代码至Github(最简单方法)
    Git的安装与配置
    下载网址
    .net core 2.2 部署CentOS7(5)部署.net core mvc
    .net core 2.2 部署CentOS7(4)CentOS7下载并安装.NET SDK(软件开发工具包)
    .net core 2.2 部署CentOS7(3)安装Xshell操控CentOS7
    .net core 2.2 部署CentOS7(2)给虚拟机安装CentOS7
    .net core 2.2 部署CentOS7(1)安装虚拟机
    Winfrom 基于TCP的Socket服务端 多线程(进阶版)
  • 原文地址:https://www.cnblogs.com/panchanggui/p/14987593.html
Copyright © 2011-2022 走看看