欢迎光临散文网 会员登陆 & 注册

SpringMVC由浅入深实用教程-SpringMVC核心技术(下篇)

2021-03-19 15:39 作者:动力节点小王本王  | 我要投稿



多个拦截器的执行

项目:interceptor2。在项目 interceptor 基础上修改。

(1) 再定义一个拦截器

(2) 多个拦截器的注册与执行

(3) 控制台执行结果

当有多个拦截器时,形成拦截器链。拦截器链的执行顺序,与其注册顺序一致。需要再次强调一点的是,当某一个拦截器的 preHandle()方法返回true 并被执行到时,会向一个专门的方法栈中放入该拦截器的 afterCompletion() 方法。

多个拦截器中方法与处理器方法的执行顺序如下图:

 

从图中可以看出,只要有一个preHandle()方法返回false,则上部的执行链将被断开,其后续的处理器方法与postHandle()方法将无法执行。但,无论执行链执行情况怎样,只要方法栈中有方法,即执行链中只要有 preHandle()方法返回true,就会执行方法栈中的afterCompletion()方法。最终都会给出响应。

换一种表现方式,也可以这样理解:

权限拦截器举例

只有经过登录的用户方可访问处理器,否则,将返回“无权访问”提示。本例的登录,由一个JSP 页面完成。即在该页面里将用户信息放入session中。也就是说,只要访问过该页面,就说明登录了。没访问过,则为未登录用户。

项目:interceptor_permission。在项目 interceptor1 基础上修改。

(1) 修改 index 页面

(2) 定义 Controller

(3) 定义 welcome 页面

(4) 定义权限拦截器

preHandle()方法返回false 时,需要使用 request 或 response 对请求进行响应。

(5) 定义 fail 页面

(6) 注册权限拦截器

(7) 定义 login 页面

(8) 定义 logout 页面

(9) 项目测试

Step1:在地址栏先直接提交system.do 请求

Step2:访问login.jsp,进行用户登录

Step3:再次提交system.do 请求

Step4:访问logout.jsp,进行用户退出

Step5:三次提交system.do 请求


最后奉上视频教程👇,视频观看效果更佳!!走过路过别忘素质三连哦~~



SpringMVC由浅入深实用教程-SpringMVC核心技术(下篇)的评论 (共 条)

分享到微博请遵守国家法律