1、创建拦截器
创建ScheduleInterceptor 类实现HandlerInterceptor接口,重写preHandle、postHandle、afterCompletion方法
@Slf4j
public class ScheduleInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//在请求处理之前拦截
log.info("Demo01Interceptor preHandle...");
//返回true表示接续执行请求,返回false表示停止执行请求
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//在请求处理之后拦截
log.info("Demo01Interceptor postHandle...");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//在视图渲染之后拦截
log.info("Demo01Interceptor afterCompletion...");
}
}
2、创建拦截器配置类
创建WebMvcConfiguration配置类实现WebMvcConfigurer接口,重写addInterceptors方法,并在类上添加@Configuration注解表明此类为配置类
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册拦截器,需要指定拦截路径
//设置拦截路径
registry.addInterceptor(new ScheduleInterceptor()).addPathPatterns("/**");
}
}
3、编写持久层 业务层 表现层代码
写简单的方法 ,如果需要测试可以只写表现层 ,以下只列出表现层代码
@RestController
@Slf4j
@RequestMapping("/schedule")
public class ScheduleController {
@Autowired
private ScheduleService scheduleService;
/**
* 根据id删除计划
* @param id
*/
@Transactional(rollbackFor = Exception.class)
@DeleteMapping("/{id}")
void deleteSchedule(@PathVariable("id") Integer id) {
log.info("删除数据");
scheduleService.deleteSchedule(id);
}
4、测试结果