java 修改request参数_request请求新增或修改header参数-java-亲测可行

拦截器实现request请求新增header参数

TODO:网上找了很多都不行,好不容易找到一个可以的,给大家分享一下!

1、新增拦截器类RemoteAddrFilter.java

2、新增类HeaderMapRequestWrapper.java

3:、done

RemoteAddrFilter.java:

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

/**

* @ClassName : RemoteAddrFilter

* @Description :

* @Version 1.0

*/

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);

//校验请求request Header中是否有对应值

String language = request.getParameter("language");

if (language !=null && !"".equals(language)) {

//如果get请求url中带有这个参数,则request中新增一个header

requestWrapper.addHeader("language", language);

// Goes to default servlet.

chain.doFilter(requestWrapper, response);

}

// Goes to default servlet.

chain.doFilter(request, response);

}

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

}

HeaderMapRequestWrapper.java

import java.util.Collections;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletRequestWrapper;

/**

* @ClassName : HeaderMapRequestWrapper

* @Version 1.0

*/

public class HeaderMapRequestWrapper extends HttpServletRequestWrapper {

/**

* construct a wrapper for this request

*

* @param request

*/

public HeaderMapRequestWrapper(HttpServletRequest request) {

super(request);

}

private MapheaderMap = new HashMap();

/**

* add a header with given name and value

*

* @param name

* @param value

*/

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;

}

/**

* get the Header names

*/

@Override

public EnumerationgetHeaderNames() {

Listnames = Collections.list(super.getHeaderNames());

for (String name : headerMap.keySet()) {

names.add(name);

}

return Collections.enumeration(names);

}

@Override

public EnumerationgetHeaders(String name) {

Listvalues = Collections.list(super.getHeaders(name));

if (headerMap.containsKey(name)) {

values.add(headerMap.get(name));

}

return Collections.enumeration(values);

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值