encabezado de solicitud de agregar springboot (implementado por HttpServletRequestWrapper)
******************************
Clases e interfaces relacionadas
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) {
******************************
Ejemplos
***********************
capa de filtro
CustomHttpServletRequest: clase de solicitud personalizada, agregar métodos relacionados
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: el filtro agrega un encabezado a la solicitud
@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);
}
}
***********************
capa de configuración
WebMvcConfig: registrar interceptor, agregar encabezado a la solicitud especificada
@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;
}
}
***********************
capa de controlador
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";
}
}
************************
Salida de la consola
瓜田李下
Descripción: interfaz de llamada / hola, el interceptor intercepta la solicitud, agrega encabezado de solicitud