Java 在Spring筛选器中更改HttpServletRequest的后体
我有一个弹簧过滤器:Java 在Spring筛选器中更改HttpServletRequest的后体,java,spring,filter,Java,Spring,Filter,我有一个弹簧过滤器: public class MyFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { } } 现在,如果这个请求是一个POST,我想
public class MyFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
}
}
现在,如果这个请求是一个POST,我想在它到达我的控制器之前写入/修改请求的POST主体。我有办法做到这一点吗?我环顾四周,找到了大量关于如何阅读正文的信息,但没有写还有一个选项,但不知道它是否符合您的要求。 也许它能帮你。下面的方法是使用SpringAspectJ。 根据需要对以下代码进行更改
@Component
@Aspect
public class WebServiceAPILoggingAspect {
private static Logger logger = Logger.getLogger(WebServiceAPILoggingAspect.class);
@Before("execution(* com.progress.d2c.web.service.*.controller.*.*(..))")
public Object controllerMethodsAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
Object proceedResponse = null;
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
String payload = IOUtils.toString(request.getInputStream(), "UTF-8");
// Now write your code...
try {
proceedResponse = joinPoint.proceed();
} catch (Exception e) {
logger.error("Failed to complete the operation.");
throw e;
}
return proceedResponse;
}
}
还有一个选择,但不知道它是否符合您的要求。 也许它能帮你。下面的方法是使用SpringAspectJ。 根据需要对以下代码进行更改
@Component
@Aspect
public class WebServiceAPILoggingAspect {
private static Logger logger = Logger.getLogger(WebServiceAPILoggingAspect.class);
@Before("execution(* com.progress.d2c.web.service.*.controller.*.*(..))")
public Object controllerMethodsAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
Object proceedResponse = null;
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
String payload = IOUtils.toString(request.getInputStream(), "UTF-8");
// Now write your code...
try {
proceedResponse = joinPoint.proceed();
} catch (Exception e) {
logger.error("Failed to complete the operation.");
throw e;
}
return proceedResponse;
}
}
这是不可能的,为什么要更改请求正文?这是不可能的,为什么要更改请求正文?