java 登录拦截器_springMVC 拦截器-用户登录拦截实战

各位小伙伴

咱们继续学习新知识

今天要分享的就是

拦截器

不知道小伙伴们平时上网的时候有没有注意到,尤其是上网购物的时候,不登录账号,就无法访问一些功能页面,比如你不登录账号,就没法查看购物车里面有什么物品.这就是拦截器起到的作用.那么今天我们就来给之前的项目添加一个拦截器.

拦截器

拦截器的概念

SpringMVC 中的 Interceptor 拦截器的主要作用就是拦截用户的 url 请求,并在执行 handler 方法的前中后加入某些特殊请求,类似于 servlet 里面的过滤器.

开发拦截器

定义一个拦截类,实现 HandlerInterceptor 接口,这里面一共有三个方法,

preHandle 方法:

在 handler 方法执行之前,运行里面的代码,可以用于用户的登录验证.

postHandle 方法:

在 handler 方法执行中,返回 ModelAndView 之前运行里面的代码,可以向页面提供共用的数据.

afterCompletion 方法:

在 handler 方法执行之后,运行里面的代码,可以进行异常处理,计算执行时间,记录日志.

df53ee96faee

在 springmvc.xml 里面配置拦截器

df53ee96faee

运行一下,页面有点丑就不展示了,直接看后台控制台的输出内容,可以看出我们的三个方法的运行顺序,和我们之前说的是一样的.

df53ee96faee

下面我们来测试多个拦截器的运行效果,再编写一个拦截器,(其实就是之前的代码复制一下,改个名字.)

df53ee96faee

千万不要忘了要配置springMVC.xml

df53ee96faee

发布项目,查看控制台的输出内容

df53ee96faee

注意:

1)当 preHandler 方法返回 false 时,其余的的两个方法都不执行,而且 handler 也不会执行

2)拦截器里面的 preHandler ,postHandler 和 afterCompletion 方法是按顺序依次执行的

3)当有多个拦截器存在时,如果有任意一个拦截器的 preHandler 方法返回 false ,则剩下的都不执行

4)如果多个拦截器同时运行(preHandler方法返回true),那么 preHanlder 方法是按顺序执行,而其余两个方法(postHandler 和 afterCompletion)是倒序执行

5)拦截器的执行顺序是按照在 springmvc 配置文件中的位置来顺序执行的

拦截器实战

需求:

只有登陆的用户才有权限访问系统中的功能

思路:

1)在登陆成功后,将用户信息放入 session.

df53ee96faee

2)编写用户登录拦截器的代码,获取 session 中的 loginName,若 loginName 不为空则证明用户成功登陆,preHandle 方法返回 true ,否则返回 false.

在这里要注意一下,开放 login.do 的 url 访问权限,不然就没法验证用户登录,没法把用户信息保存到 session 中.

df53ee96faee

配置 springMVC.xml

df53ee96faee

除了登陆验证的 url 请求,其他 url 请求,在拦截器的 preHandler 方法里面判断 session 是否有用户信息,如果有,则放行通过,如果没有 ,跳转到登陆页面,提示用户登陆.

df53ee96faee

df53ee96faee

各位小伙伴

今天的分享就到这里了

拜拜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值