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

各位小伙伴

今天的分享就到这里了

拜拜

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java和node.js 2018_node.js在2018年能继续火起来吗?我们来看看node.js的待遇情况

你知道node.js是怎么火起来的吗?你知道node.js现在的平均工资是多少吗?你知道node.js在2018年还能继续火吗?都不知道?那就来看文章吧,多学点node.js,说不定以后的你工资就会高于nodejs的平均工资了&#xf…

Android教程之android平台水波效果!提供源码!

基于Android平台实现的水波效果,提供源码,,效果图如下:

利用HttpSessionListener实现网站在线人数统计功能

为什么80%的码农都做不了架构师?>>> 在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能,即当用户输入用户名密码进行登录的时候计数器加1,然后当用户点击退出按钮退出系统的时候计数器减1。这种处理方式存…

深入react技术栈(9):表单

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号搜索前端小歌谣 获取前端知识 应用表单组件 文本框 单选按钮和复选框 Select组件 文章参考深入react技术栈

JAVA翻译官_Java开发笔记(三)Java帝国的特种官吏

上一篇文章介绍了Java工程的帝国区划,末尾给出了一段Java代码例子,这个代码虽然勉强能看懂,但是有些细节令人不甚了了。比如说“// 参观朱雀台”为何能够直接跟在当前行后面?“System.out.println”又为何被点号绕了三道湾&#x…

深入react技术栈(10):受控组件和非受控组件

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣 受控组件 非受控组件 受控组件和非受控组件的区别 文章参考深入React技术栈

数万字的0基础React知识大纲一定要藏藏好

第1章:React入门 1.1.React简介 1.1.1 官网 1.英文官网: https://reactjs.org/ 2.中文官网: https://react.docschina.org/ 1.1.2介绍描述 1.用于动态构建用户界面的 JavaScript 库(只关注于视图) 2.由Facebook开源 1.1.3React的特点 1.声明式编码 2.组件化编…

ant design datepicker处理日期范围操作

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣学习前端知识 1需求 此刻日期之前的不能选择 当天日期结束时间比开始时间打 基本样式 <Row gutter{12}><Col span{12}><Form.Item label"活动开始时间">{getFieldDecorator(startTi…

深入react技术栈(11):样式处理

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣 基本样式设置 样式中的像素值 使用className库 Css Modules css模块化遇到了哪些问题 css模块化方案 样式默认局部 使用compose组装样式 class命名技巧 实现css与js共享 外部如何覆盖局部样式 设置样式共存we…

python .center用法_Python Pandas Series.str.center()用法及代码示例

Series.str可用于以字符串形式访问系列的值并对其应用几种方法。 Pandas Series.str.center()函数用于在系列/索引中的字符串的左侧和右侧填充其他字符。该功能等效于Python的str.center()。用法&#xff1a; Series.str.center(width, fillchar’ ‘)参数&#xff1a;width:产…

点到点链路上的OSPF协议

点到点链路上的OSPF协议 OSPF的几个术语&#xff1a; 链路&#xff1a;路由器用来连接网络的接口&#xff1b; 链路状态&#xff1a;描述路由器的接口及其与邻居路由器的关系。所有链路状态信息构成链路状态数据库&#xff1b; 区域&#xff1a;有相同区域标识的一组路由器和网…

用css实现三角效果

CSS border原理 一个div或者元素的border并不是我们直观意义上的一条有高度的线&#xff0c;而是一个等高梯形或者三角形&#xff08;宽高为0时&#xff09;&#xff0c;可以看一下效果&#xff1a; HTML: <div class"arrow1"></div> CSS: .arrow1{ font…