广西壮族自治区网站建设_网站建设公司_UI设计师_seo优化
2025/12/25 20:26:27 网站建设 项目流程
1.过滤器:TestFilter
packagecom.visy.filter;importcn.hutool.core.util.ObjectUtil;importorg.springframework.core.Ordered;importorg.springframework.core.annotation.Order;importorg.springframework.stereotype.Component;importorg.springframework.web.filter.OncePerRequestFilter;importjavax.servlet.FilterChain;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;@Component@Order(Ordered.HIGHEST_PRECEDENCE)publicclassTestFilterextendsOncePerRequestFilter{@OverrideprotectedvoiddoFilterInternal(HttpServletRequestrequest,HttpServletResponseresponse,FilterChainfilterChain)throwsServletException,IOException{StringtestValue=request.getHeader("Test-Key");if(ObjectUtil.isNull(testValue)){// 创建可修改的请求包装器MutableHttpServletRequestmutableRequest=newMutableHttpServletRequest(request);mutableRequest.addHeader("Test-Key","hello");filterChain.doFilter(mutableRequest,response);}else{filterChain.doFilter(request,response);}}}
2.请求包装器:MutableHttpServletRequest
packagecom.visy.filter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletRequestWrapper;importjava.util.*;publicclassMutableHttpServletRequestextendsHttpServletRequestWrapper{privatefinalMap<String,String>customHeaders;publicMutableHttpServletRequest(HttpServletRequestrequest){super(request);customHeaders=newHashMap<>();}publicvoidaddHeader(Stringname,Stringvalue){this.customHeaders.put(name,value);}@OverridepublicStringgetHeader(Stringname){StringheaderValue=customHeaders.get(name);if(headerValue!=null){returnheaderValue;}return((HttpServletRequest)getRequest()).getHeader(name);}// Tips: 一定要写,不然@RequestHeader单个值的时候获取不到参数@OverridepublicEnumeration<String>getHeaders(Stringname){Stringvalue=getHeader(name);if(value!=null){returnCollections.enumeration(Collections.singletonList(value));}returnsuper.getHeaders(name);}@OverridepublicEnumeration<String>getHeaderNames(){Set<String>headerNames=newHashSet<>(customHeaders.keySet());Enumeration<String>e=((HttpServletRequest)getRequest()).getHeaderNames();while(e.hasMoreElements()){headerNames.add(e.nextElement());}returnCollections.enumeration(headerNames);}}
3.测试
@PostMapping({"/test"})publicvoidtest(@RequestHeaderMap<String,String>headers,@RequestHeader("Test-Key")StringtestKey,HttpServletRequestservletRequest){System.out.println("testKey1: "+headers.get("Test-Key"));//helloSystem.out.println("testKey2: "+testKey);//helloSystem.out.println("testKey3: "+servletRequest.getHeader("Test-Key"));//hello}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询