gpt4 book ai didi

Spring MVC 3.2 @ResponseBody 拦截器

转载 作者:IT老高 更新时间:2023-10-28 13:47:12 25 4
gpt4 key购买 nike

在我们的应用程序中,我们使用 JSON 进行请求和响应。 Controller 方法使用@RequestBody() 进行注释。返回的对象,例如转移响应。我想从@ResponseBody 中获取这个对象。我已经设置了一个拦截器 postHandle 方法:

@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws java.lang.Exception

{
....

}

那么如何在 postHandle 方法中获取 JSON 呢?

提前致谢通用汽车

最佳答案

作为 Pavel Horal已经提到,当调用 postHandle() 方法时,响应体对象已经转换为 JSON 并写入响应。您可以尝试编写自己的自定义注解和方面,以拦截 Controller 响应主体对象。

// custom annotation
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnnotation {
}

// aspect
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class MyCustomAnnotationAspect {
@Around(value = "@annotation(org.package.MyCustomAnnotation)", argNames = "pjp")
public Object aroundAdvice(final ProceedingJoinPoint pjp) {
// this is your response body
Object responseBody = pjp.proceed();
return responseBody;
}
}

使用 @EnableAspectJAutoProxy

启用对 AspectJ 方面的支持

关于Spring MVC 3.2 @ResponseBody 拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17280602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com