Spring的自定义拦截器

来源:互联网 发布:超星尔雅网络课程平台 编辑:程序博客网 时间:2024/06/05 11:03

  我们知道Strust2中的工作流程实际上时通过一系列的拦截器来实现功能的,同样的,在SpringMVC中也可以定义一系列的拦截器来完成一些功能。

  1.自定义拦截器

  ① 写一个类实现HandleInterceptor接口并重写三个方法,preHnadle/postHandle/afterComletion

  ② 在springmvc.xml中进行配置一下这个类的<interceptors>的子节点。需要注意的是如不加说明,拦截器可拦截所有请求,但也可以指定只拦截和只不拦截哪些请求。

  2.三个方法的作用

  preHandle:它会在目标方法执行前进行调用,具体来说就是在堆请求参数进行类型转换、数据校验前进行调用。可做一些权限登录、日志、事务操作。

  这个方法有返回值:若不需要再调用后续的目标方法或者后续的拦截器,那么返回false;返回true则会继续调用后续的拦截器和目标方法。

  postHandle:这个方法在目标方法执行完后和返回响应前被调用。可做一些可在其中设置request的属性和要转向的视图。

  afterComplition:在DispacherServlet处理完请求之后被调用,可以用来释放某些资源。

  3.拦截器的执行顺序

  ① 拦截器之间按照在springmvc.xml中的配置顺序来执行。

  ② 而实际的拦截器中的三个方法的执行顺序是有规律的:

  pre1-->pre2-->handle-->post2-->post1-->aft2-->aft1

  即pre方法按照正序,post和aft方法按照反序执行,这是因为DispacherServlet中遍历Interceptor的for循环的方式不一样。

 

 

原创粉丝点击