springframe 的HandlerInterceptor是怎么使用的请举例说明
HandlerInterceptor是Spring MVC中的拦截器,可以在请求处理前、请求处理后以及请求处理完成后进行一系列操作,包括权限验证、日志记录、性能统计、异常处理等。
其使用步骤如下:
-
创建一个类实现HandlerInterceptor接口,并重写其中的三个方法:preHandle、postHandle和afterCompletion。
-
在Spring MVC配置文件中配置拦截器,可以使用mvc:interceptors标签或者@EnableWebMvc注解。
-
在需要拦截的Controller类或方法上添加@Interceptor注解,指定要使用的拦截器。
举例说明:
- 创建一个拦截器类,实现HandlerInterceptor接口:
public class LogInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理前记录日志
System.out.println("请求开始:" + request.getRequestURL());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在请求处理后记录日志
System.out.println("请求结束:" + request.getRequestURL());
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在请求处理完成后记录日志
System.out.println("请求完成:" + request.getRequestURL());
}
}
- 在Spring MVC配置文件中配置拦截器:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.LogInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
- 在需要拦截的Controller类或方法上添加@Interceptor注解:
@Interceptor("logInterceptor")
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getUsers() {
// 处理请求
}
}
这样,在UserController中的所有方法执行前、执行后以及执行完成后,都会调用LogInterceptor中对应的方法。
原文地址: http://www.cveoy.top/t/topic/bD8A 著作权归作者所有。请勿转载和采集!