springboot 添加请求头(HttpServletRequestWrapper实现)
******************************
相关类及接口
HttpServletRequestWrapper
public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest {
***************
构造方法
public HttpServletRequestWrapper(HttpServletRequest request) {
super(request);
}
***************
相关方法
public String getHeader(String name) {
public Enumeration<String> getHeaders(String name) {
public Enumeration<String> getHeaderNames() {
public int getIntHeader(String name) {
public long getDateHeader(String name) {
******************************
示例
***********************
filter 层
CustomHttpServletRequest:自定义请求类,添加相关方法
public class CustomHttpServletRequest extends HttpServletRequestWrapper {
private Map<String,String> headers=new HashMap<>();
public CustomHttpServletRequest(HttpServletRequest request){
super(request);
}
public void addHeader(String name,String value){
headers.put(name, value);
}
@Override
public String getHeader(String name) {
String value=super.getHeader(name);
if (headers.containsKey(name)){
value=headers.get(name);
}
return value;
}
@Override
public Enumeration<String> getHeaderNames() {
List<String> names=Collections.list(super.getHeaderNames());
names.addAll(headers.keySet());
return Collections.enumeration(names);
}
@Override
public Enumeration<String> getHeaders(String name) {
List<String> list= Collections.list(super.getHeaders(name));
if (headers.containsKey(name)){
list.add(headers.get(name));
}
return Collections.enumeration(list);
}
}
CustomFilter:过滤器对请求添加header
@Component
public class CustomFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
CustomHttpServletRequest request=new CustomHttpServletRequest((HttpServletRequest) servletRequest);
request.addHeader("header","瓜田李下");
filterChain.doFilter(request,servletResponse);
}
}
***********************
config 层
WebMvcConfig:注册拦截器,对指定的请求添加header
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Resource
private CustomFilter customFilter;
@Bean
public FilterRegistrationBean<CustomFilter> initFilterRegistrationBean(){
FilterRegistrationBean<CustomFilter> registrationBean=new FilterRegistrationBean<>();
registrationBean.setFilter(customFilter);
registrationBean.addUrlPatterns("/hello");
registrationBean.setOrder(0);
return registrationBean;
}
}
***********************
controller 层
HelloController
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello4(HttpServletRequest request){
String value=request.getHeader("header");
if (value!=null){
System.out.println(value);
}
return "hello world";
}
}
************************
控制台输出
瓜田李下
说明:调用接口/hello, 拦截器拦截请求,添加请求头