java implements HandlerInterceptor 的使用
时间: 2023-11-03 14:17:38 浏览: 99
在 Java Web 开发中,Interceptor(拦截器)是一种非常重要的组件,它可以在请求处理的过程中进行拦截,并进行一些额外的处理,例如:身份认证、日志记录、异常处理等。Spring 框架中的 HandlerInterceptor 接口就是用来实现拦截器的。
具体使用步骤如下:
1. 创建一个类并实现 HandlerInterceptor 接口:
```java
public class MyInterceptor implements HandlerInterceptor {
// 在请求处理之前进行调用(Controller 方法调用之前)
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 返回 true 则继续执行,返回 false 则取消当前请求
return true;
}
// 在请求处理之后进行调用,但是在视图被渲染之前(Controller 方法调用之后)
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
// 在整个请求结束之后被调用,也就是在 DispatcherServlet 渲染了对应的视图之后执行
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
```
2. 配置拦截器:
在 SpringMVC 的配置文件(一般是 applicationContext.xml)中添加拦截器的配置:
```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
```
以上配置表示将 MyInterceptor 拦截器应用到所有的请求路径上。
注意:在 Spring Boot 中,需要在启动类上添加 @EnableWebMvc 注解才能使用上述配置。如果不添加该注解,则需要在配置类中手动添加拦截器:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
}
}
```
以上配置将 MyInterceptor 拦截器应用到所有的请求路径上。
阅读全文