【问题标题】:Changing POST body of HttpServletRequest in Spring filter [duplicate]在 Spring 过滤器中更改 HttpServletRequest 的 POST 正文 [重复]
【发布时间】:2016-06-18 18:41:53
【问题描述】:

我有一个 Spring 过滤器:

  public class MyFilter implements Filter {

      public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {

       }
  }

现在,如果此请求是 POST,我想在请求到达我的控制器之前编写/修改请求的 POST 正文。有没有办法我可以做到这一点?我环顾四周,可以找到很多关于如何阅读正文而不是写作的信息

【问题讨论】:

  • 这不可能,为什么要更改请求正文?

标签: java spring filter


【解决方案1】:

还有一个选项,但不知道它是否符合您的要求。 也许它可以帮助你。下面的方法是使用 Spring AspectJ。 根据您的需要对以下代码进行更改。

@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;
    }
}

【讨论】:

    猜你喜欢
    • 2021-01-22
    • 2014-08-18
    • 1970-01-01
    • 2021-10-21
    • 2018-01-18
    • 2016-03-13
    • 2011-04-19
    • 2011-12-27
    • 2023-03-19
    相关资源
    最近更新 更多