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() {
|
// 清理逻辑
|
}
|
}
|