Spring 修改 ParameterMap内容

Spring 修改 ParameterMap内容

修改ParameterMap,通过重写HttpServletRequestWrapper实现,代码如下:

  • 继承HttpServletRequestWrapper,重写它
package com.bdjr.client.app.intercepter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.Enumeration;
import java.util.Map;
import java.util.Vector;

/**
 * @version 1.0
 * @description:
 * @mofified By:
 */
@SuppressWarnings("unchecked")
public class ParameterRequestWrapper extends HttpServletRequestWrapper {

    private Map params;

    public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {
        super(request);
        this.params = newParams;
    }

    @Override
    public Map getParameterMap() {
        return params;
    }

    @Override
    public Enumeration getParameterNames() {
        Vector l = new Vector(params.keySet());
        return l.elements();
    }

    @Override
    public String[] getParameterValues(String name) {
        Object v = params.get(name);
        if(v == null) {
            return null;
        } else
        if(v instanceof String[]) {
            return (String[]) v;
        } else
        if(v instanceof String) {
            return new String[] {(String)v};
        } else {
            return new String[] {v.toString()};
        }
    }

    @Override
    public String getParameter(String name) {
        Object v = params.get(name);
        if(v == null) {
            return null;
        } else
        if(v instanceof String[]) {
            String[] strArr = (String[])v;
            if(strArr.length > 0) {
                return strArr[0];
            } else {
                return null;
            }
        } else
        if(v instanceof String) {
            return (String) v;
        } else {
            return v.toString();
        }
    }

}

  • Filter中修改Request内容
package com.bdjr.client.app.intercepter;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;

/**
 * @version 1.0
 * @description:
 * @mofified By:
 */
@Component
@WebFilter(filterName = "clientAppFilter", urlPatterns = "/*")
public class ClientAppFilter implements Filter {

    @SuppressWarnings("unused")
    private Logger logger = LoggerFactory.getLogger(ClientAppFilter.class);

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

    @Override
    public void doFilter(ServletRequest servletRequest,
                         ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest)servletRequest;

        HttpServletResponse response = (HttpServletResponse) servletResponse;

        //访问地址
        String uri = request.getRequestURI();
        if("/insertCompany".equals(uri) || "/insertCompany".equals(uri)) {
            String token = request.getParameter("token");
            if(StringUtils.isEmpty(token)) {
                HashMap hashMap = new HashMap(request.getParameterMap());
                String[] str = {"修改了个值"};
                hashMap.put("token", str);
                HttpServletRequest req =  request;
                ParameterRequestWrapper wrapRequest = new ParameterRequestWrapper(req, hashMap);
                request.getParameterMap();
                request = wrapRequest;
            }
        }
        logger.info("client - app filter —— ClientAppFilter.java 。 。 。 。 。 。 。 ");

        filterChain.doFilter(request, response);

    }

    @Override
    public void destroy() {

    }

}

大功告成。

猜你喜欢

转载自blog.csdn.net/Cy_LightBule/article/details/88249658