package com.vincent.rsf.server.common.interceptor.severlet; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; @WebFilter("/*") // 拦截所有请求 public class ParameterAddingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化逻辑 } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (request instanceof HttpServletRequest) { // 创建可修改参数的请求包装器 ParameterAddableRequest wrappedRequest = new ParameterAddableRequest((HttpServletRequest) request); // 添加自定义参数 addCustomParameters(wrappedRequest); // 继续过滤器链 chain.doFilter(wrappedRequest, response); } else { chain.doFilter(request, response); } } private void addCustomParameters(ParameterAddableRequest request) { // 添加请求ID和时间戳 // request.addParameter("requestId", UUID.randomUUID().toString()); request.addParameter("timestamp", String.valueOf(System.currentTimeMillis())); // 根据业务需求添加其他参数 String userAgent = request.getHeader("User-Agent"); if (userAgent != null && userAgent.contains("Mobile")) { request.addParameter("deviceType", "mobile"); } else { request.addParameter("deviceType", "desktop"); } } @Override public void destroy() { // 清理逻辑 } }