拦截器是 AOP 编程思想的典型应用
详述 Spring MVC 框架中拦截器 Interceptor 的使用方法实现
1:创建一个controller类
package
2:创建一个类实现HandlerInterceptor接口作为拦截器
package
preHandle()方法在“处理方法”之前执行postHandle()方法在“处理方法”之后执行afterCompletion()方法在“Dispatcherservlet ”结束之后执行
3:在spring配置文件中对拦截器进行配置
<?xml version="1.0" encoding="UTF-8"?>
注意,使用Spring MVC的拦截器需要导入头文件:xmlns:mvc="/schema/mvc";/schema/mvc; /schema/mvc/spring-mvc.xsd<mvc:mappingpath="/**"/>中的“/**”表示:根路径及根路径下的所有子路径都添加了这个拦截器(实际范围看下方)
关于拦截器的作用范围
以上面为例,虽然在spring配置文件中配置了"cn.sxt.interceptor.MyInterceptor"(这个拦截器的)作用范围为<mvc:mappingpath="/**"/>(根路径下即其所有子路径),但是并不是所有链接的申请都可以被这个拦截器拦截。
因为这个拦截器的真是范围还收到web.xml与spring配置文件中影响。
还是以上面为例,其web.xml为:
<servlet>
可以看到,其作用范围设置为<url-pattern>/</url-pattern>(所有),但在随后的spring配置文件中通过“可使用包标签(暂且这么称呼)”对其进行了限制
<context:component-scan
而拦截器也受着两个配置文件的限制,所以,上面例子中的拦截器其真是范围应该是:通往这两个包(cn.sxt.controller、cn.sxt.servlet)的所有链接
PS:“猜想”:所有spring配置文件中的组件的作用范围都受“可使用包标签(暂且这么称呼)”(dispatcherservlet)的限制,例如视图渲染器与拦截器等
例:设置登录操作的拦截器