AOP:spring mvc 拦截器
参考文献:处理器拦截器详解——跟着开涛学SpringMVC
基础知识准备:
1. ant风格的路径:
?表示任何单个字符,*表示匹配0个或任意多个字符,**表示匹配0个或更多的目录
/project/*.a : 匹配项目根路径下所有在project路径下的.a文件
/project/p?ttern : 匹配项目根路径下 /project/pattern 和 /app/pXttern等,但是不包括/app/pttern
/**/example : 匹配项目根路径下 /project/example, /project/foow/example, 和 /example等
/app/**/dir/file.* :匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java等
/**/*.jsp : 匹配(Matches)任何的.jsp 文件
最长匹配原则(has more characters) 说明,URL请求/project/dir/file.jsp,现在存在两个路径匹配模式/*/.jsp和/project/dir/.jsp,
那么会根据模式/project/dir/.jsp来匹配
2. 跨域
参考:https://www.cnblogs.com/wangpenghui522/p/6284355.html
https://www.cnblogs.com/dojo-lzz/p/4265637.html
https://blog.csdn.net/github_37360787/article/details/54834789
spring mvc <mvc:interceptor
参考:详述 Spring MVC 框架中拦截器 Interceptor 的使用方法
1. HandlerInterceptor接口的三个方法
preHandle 请求处理前的预处理函数
postHandle 请求处理后的后处理函数
afterCompletion 若存在view 则在view渲染后的处理方法
2. 在<mvc:interceptors>下定义多个拦截器<mvc:interceptor>
参考: springMVC中多个拦截器Interceptor的执行顺序
例如两个intercepter:intercepter1,intercepter2 执行顺序如下:
preHandle1 preHandle2 postHandle2 postHandle1 afterCompletion2 afterCompletion1
3. interceptor配置 (配置在spring-mvc.xml中)
<mvc:interceptors> <!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 --> <!-- <bean class="com.bybo.aca.web.interceptor.Login"/> --> <mvc:interceptor> <!-- 进行拦截:/**表示拦截所有controller --> <mvc:mapping path="/**" /> <!-- 不进行拦截 --> <mvc:exclude-mapping path="/index.html"/>
<!--需要注入的拦截方法--> <bean class="com.bybo.aca.web.interceptor.Login"/> </mvc:interceptor> </mvc:interceptors>