拦截器获取controller
时间: 2023-09-12 12:10:12 浏览: 36
您好!关于您的问题,拦截器可以通过实现 HandlerInterceptor 接口来获取请求的 Controller。在 preHandle 方法中,可以通过参数获取当前请求的处理器 HandlerExecutionChain,再通过 HandlerExecutionChain.getHandler() 方法获取到具体的处理器对象,即 Controller。以下是示例代码:
```java
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerExecutionChain) {
HandlerExecutionChain chain = (HandlerExecutionChain) handler;
Object controller = chain.getHandler();
// 处理获取到的 Controller 对象
// ...
}
return true;
}
//...
}
```
需要注意的是,这种方式获取到的 Controller 对象是 Object 类型,需要进行类型转换才能调用具体的方法。同时,可能存在多级拦截器的情况,需要在 preHandle 方法中进行判断和处理。