springboot Interceptor 获取controller 放回的值
时间: 2023-12-17 20:04:16 浏览: 140
在Spring Boot中,可以通过拦截器(Interceptor)来获取Controller返回的值。下面是一个示例代码,用于在拦截器中获取Controller返回的值:
```java
public class CustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 获取Controller返回的值
Object returnValue = modelAndView.getModel().get("returnValue");
System.out.println("Controller返回的值:" + returnValue);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
```
在上面的代码中,我们在postHandle方法中获取了Controller返回的值,具体实现方式是通过ModelAndView对象获取returnValue属性。需要注意的是,这种方式只适用于返回值是ModelAndView类型的Controller方法,如果Controller方法返回的是其他类型的数据(如String、Map等),则需要根据具体情况进行修改。
在Controller方法中,我们需要将需要返回的值存储到ModelAndView对象中,示例代码如下:
```java
@RequestMapping("/test")
public ModelAndView test() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("returnValue", "Hello World");
modelAndView.setViewName("test");
return modelAndView;
}
```
在上面的代码中,我们将需要返回的值存储到ModelAndView对象中,并将视图名称设置为test。当Controller方法执行完毕后,Spring Boot会自动将ModelAndView对象传递给拦截器,从而实现获取Controller返回值的功能。
阅读全文