implements HandlerInterceptor和extends HandlerInterceptorAdapter有什么差别吗
时间: 2023-11-03 13:53:23 浏览: 208
在Spring MVC框架中,实现自定义拦截器可以通过两种方式:实现HandlerInterceptor接口或继承HandlerInterceptorAdapter类。这两种方式有一些差别。
1. 实现HandlerInterceptor接口:
- 实现该接口需要实现三个方法:preHandle、postHandle和afterCompletion。
- preHandle方法在请求处理之前被调用,可以用于进行一些前置处理逻辑,如权限验证、日志记录等。
- postHandle方法在请求处理之后、视
相关问题
你看看我问的和你回答的是一个东西吗
抱歉,我理解错了你的问题。你想知道如何在WebService中拦截请求和响应。在Spring Boot中,你可以使用拦截器(Interceptor)来拦截WebService接口的请求和响应。
首先,你需要创建一个实现HandlerInterceptor接口的拦截器类,该接口定义了在请求处理之前、请求处理之后和视图渲染之后执行的方法。你可以在这些方法中编写自定义的拦截逻辑。
然后,在Spring Boot的配置类中,通过重写addInterceptors方法来注册拦截器。你可以指定拦截的路径、排除的路径等。
下面是一个简单的示例代码:
```java
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理之前拦截
// 可以在这里进行权限验证、日志记录等操作
return true; // 返回true表示继续执行请求,返回false表示终止请求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 请求处理之后,视图渲染之前拦截
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 请求处理完成后拦截,即在视图渲染完成后执行
}
}
```
然后,在配置类中注册拦截器:
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/api/**"); // 拦截以/api开头的请求
}
}
```
在上述示例中,我们创建了一个名为MyInterceptor的拦截器类,并在配置类WebConfig中注册了该拦截器,并指定了拦截的路径为以/api开头的请求。
这样,当有请求匹配到指定路径时,拦截器的相关方法会被调用,你可以在拦截器方法中编写自己的逻辑来对请求和响应进行拦截、处理和修改。
阅读全文