当前位置:   article > 正文

springboot 添加请求头(HttpServletRequestWrapper实现)_springboot添加请求头

springboot添加请求头

springboot 添加请求头(HttpServletRequestWrapper实现)

 

 

******************************

相关类及接口

 

HttpServletRequestWrapper

  1. public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest {
  2. ********
  3. 构造方法
  4. public HttpServletRequestWrapper(HttpServletRequest request) {
  5. super(request);
  6. }
  7. ********
  8. 相关方法
  9. public String getHeader(String name) {
  10. public Enumeration<String> getHeaders(String name) {
  11. public Enumeration<String> getHeaderNames() {
  12. public int getIntHeader(String name) {
  13. public long getDateHeader(String name) {

 

 

******************************

示例

 

***********************

filter 层

 

CustomHttpServletRequest:自定义请求类,添加相关方法

  1. public class CustomHttpServletRequest extends HttpServletRequestWrapper {
  2. private Map<String,String> headers=new HashMap<>();
  3. public CustomHttpServletRequest(HttpServletRequest request){
  4. super(request);
  5. }
  6. public void addHeader(String name,String value){
  7. headers.put(name, value);
  8. }
  9. @Override
  10. public String getHeader(String name) {
  11. String value=super.getHeader(name);
  12. if (headers.containsKey(name)){
  13. value=headers.get(name);
  14. }
  15. return value;
  16. }
  17. @Override
  18. public Enumeration<String> getHeaderNames() {
  19. List<String> names=Collections.list(super.getHeaderNames());
  20. names.addAll(headers.keySet());
  21. return Collections.enumeration(names);
  22. }
  23. @Override
  24. public Enumeration<String> getHeaders(String name) {
  25. List<String> list= Collections.list(super.getHeaders(name));
  26. if (headers.containsKey(name)){
  27. list.add(headers.get(name));
  28. }
  29. return Collections.enumeration(list);
  30. }
  31. }

 

CustomFilter:过滤器对请求添加header

  1. @Component
  2. public class CustomFilter implements Filter {
  3. @Override
  4. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  5. CustomHttpServletRequest request=new CustomHttpServletRequest((HttpServletRequest) servletRequest);
  6. request.addHeader("header","瓜田李下");
  7. filterChain.doFilter(request,servletResponse);
  8. }
  9. }

 

***********************

config 层

 

WebMvcConfig:注册拦截器,对指定的请求添加header

  1. @Configuration
  2. public class WebMvcConfig implements WebMvcConfigurer {
  3. @Resource
  4. private CustomFilter customFilter;
  5. @Bean
  6. public FilterRegistrationBean<CustomFilter> initFilterRegistrationBean(){
  7. FilterRegistrationBean<CustomFilter> registrationBean=new FilterRegistrationBean<>();
  8. registrationBean.setFilter(customFilter);
  9. registrationBean.addUrlPatterns("/hello");
  10. registrationBean.setOrder(0);
  11. return registrationBean;
  12. }
  13. }

 

***********************

controller 层

 

HelloController

  1. @RestController
  2. public class HelloController {
  3. @RequestMapping("/hello")
  4. public String hello4(HttpServletRequest request){
  5. String value=request.getHeader("header");
  6. if (value!=null){
  7. System.out.println(value);
  8. }
  9. return "hello world";
  10. }
  11. }

 

************************

控制台输出

 

瓜田李下

说明:调用接口/hello, 拦截器拦截请求,添加请求头

 

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/924319
推荐阅读
相关标签
  

闽ICP备14008679号