用Java写一个拦截器
时间: 2023-10-08 14:10:56 浏览: 73
在 Java 中,我们可以使用拦截器(Interceptor)来对请求进行预处理或后处理。下面给出一个简单的拦截器示例:
```java
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理之前进行拦截处理
// 如果需要拦截请求,可以在此处返回 false,否则返回 true 继续执行请求
return true;
}
@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 {
// 在请求处理完成之后进行拦截处理
// 可以在此处进行一些资源的释放等操作
}
}
```
这里我们实现了 `HandlerInterceptor` 接口,并重写了三个方法:
- `preHandle` 方法在请求处理之前进行拦截处理,可以在此处进行一些前置处理,例如认证、鉴权等。
- `postHandle` 方法在请求处理之后进行拦截处理,可以在此处对请求返回的结果进行修改或处理。
- `afterCompletion` 方法在请求处理完成之后进行拦截处理,可以在此处进行一些资源的释放等操作。
在实际使用中,我们可以通过配置拦截器链来使用拦截器,例如:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor);
}
}
```
在以上示例中,我们创建了一个 `WebMvcConfig` 配置类,并实现了 `WebMvcConfigurer` 接口,重写了 `addInterceptors` 方法来添加拦截器 `MyInterceptor`。通过配置拦截器链,我们可以使拦截器生效,对请求进行拦截处理。
阅读全文