1.拦截器(Interceptor):定义一个实现HandlerInterceptor接口的拦截器。拦截器就是对一个完整的HTTP请求的各个步骤做一些判断。实现HandlerInterceptor接口需要实现preHandler,postHandler,afterCompletion方法。
preHandler在请求开始之前需要做的一些事情,判断等。(如通过request.getCookies() ,读取cookie中的ticket,判断ticket是否不为空,没有过期等从而用户是否有效,并确定当前线程用户。每个线程访问的用户不同,需要为每个线程保存一个用户[利用线程本地变量ThreadLocal保存])
postHandler:在渲染之前,将用户传给模板(前端html页面);
afterCompletion:结束之后将当前用户清理干净。
>>拦截器写完之后要注册到MVC中。注册类WebConfiguration需要继承WebMvcConfigurerAdapter类,重写addInterceptors()方法;
>>定义拦截器和定义拦截器的注册类时需要添加注解@Component
2.AOP:面向切面编程。所有业务都需要处理的业务。把遍布应用各处的功能分离出来形成可重用组件。如日志、事务管理等。
通过切面的注解@Aspect,切入到所有的切点的业务中。
@Before("execution(* com.example.third.controller.*Controller.*(..))")//前置通知,()内表示切点。然后定义在执行所有的ocntroller方法之前要做的事情public void beforeMethod(JoinPoint joinPoint){...}</