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,一经查实,立即删除!

相关文章

vim匹配特定的行并删除它

From:http://robinfei.blog.sohu.com/111990727.html 删除包含特定字符的行: g/pattern/d 删除不包含指定字符的行: v/pattern/d g!/pattern/d 现实TAB键以及空格等: set list! 删除指定的行: :x,.d #从x行…

React开发(171):处理删除与批量删除操作

//处理删除操作handleDelete (id, isBatch) > {if (isBatch && id.length 0) return message.warn(请勾选好友助力);}; 两个参数控制全选和非全选 nice 秒呀

java中异常+连接重置_是什么导致我的java.nett.ocketException:连接重置?

是什么导致我的java.nett.ocketException:连接重置?我们看到了频繁但断断续续的情况。java.net.SocketException: Connection reset我们日志中的错误。我们不确定Connection reset错误实际上来自,以及如何进行调试。这个问题似乎与我们试图发…

ubuntu下查看进程端口

ubuntu下查看进程端口 关键字: linux ubuntu # 查看所有打开的端口及服务名(注意这里显示的服务名只是标准端口对应的服务名,可能并不准确) nmap localhost # 查看哪些进程打开了指定端口port(对于守护进程必须以root用户执行才能…

gzip和gunzip 解压参数

From:http://www.jb51.net/LINUXjishu/11041.html 点评:Linux压缩保留源文件的方法: gzip –c filename > filename.gz Linux解压缩保留源文件的方法: gunzip –c filename.gz > filename gunzip的用法 1.作用 gunzip命令作用是解压文…

React开发(172):React引入背景图片

import React, { Component } from react; import img1 from /assets/1.jpg;

Java游戏聊斋聂小倩_《聊斋倩女幽魂》聂小倩教你赢得战斗

即将由国内最大体感游戏平台——17Vee(亿旗体感)推出的3D单机体感游戏《聊斋之倩女幽魂》因其独特的战斗模式而备受关注。下面,就由《倩女幽魂》的女主角聂小倩来带大家亲身体验一把全新的体感战斗模式。第一步,当然是熟悉体感操作。在第一场战斗前&…

77种互联网盈利创新模式(3)

三.网上销售 11. 电子商务的新贵 《时代》选中亚马逊的CEO贝索斯做风云人物,绝对名副其实。对亚马逊研究越深,越觉得它确实在各方面都具有王者风范。 有1560万种理由认为亚马逊是电子商务之王。这个1560万,正是亚马逊的…

python向服务器请求压缩数据及解压缩数据

向服务器请求压缩数据格式,并解压缩数据 #!/usr/bin/env python # encodingutf-8import urllib2, httplibdef writeFile(fname, data):f open(fname, "w")f.write(data)f.close()if __name__ __main__:httplib.HTTPConnection.debuglevel 1request ur…

LINUX PAM验证机制

一.PAM简介 Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式.换句话说,不用(重新编写和)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制.这种方式下,就算升级本地认证机制,也不用修改程序.PAM使用配置文件/etc/pam.co…

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

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

hdu 2110 基础母函数

题意:退出本身并不麻烦,麻烦的是,退出的人需要取走相应比例(1/3)金额的资产。假设公司此时一共有n种价值的资产,每种价值的资产数量已知,请帮助心烦意乱的XHD夫妇计算一共有多少种分割资产的方法…

Python SIP使用总结(WinLinux通用)

From: http://topic.csdn.net/u/20120324/22/cd8796f8-c601-492c-992d-3d70d58ba51b.html?07033688857013248#replyachor 本文原先发表与我的博客。这是我做图像处理的时候摸索到的,现分享给大家。在用PythonOpenCV做影像分割、识别以及变换检测时,有…

java quartz 2.2.3_java – Spring 3 Quartz 2错误

当我用Quartz 2使用Spring 3时,我收到以下错误。有人知道原因吗?错误:Exception in thread "main" org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.scheduling.quart…

python中调用C++写的动态库

一、环境&#xff1a;Windows XP Python3.2 1. dll对应的源文件(m.cpp)&#xff1a; #include <stdio.h>extern "C" {_declspec(dllexport) int add(int a, int b){return ab;}_declspec(dllexport) void print_sum(unsigned long ulNum){while(ulNum ! 0){p…

Java注解入门

第一部分:了解一下java1.5起默认的三个annotation类型一个是Override:只能用在方法之上的&#xff0c;用来告诉别人这一个方法是改写父类的。 一个是Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会产生警告信息,可以设定在程序里的所有的元素上. 一个是SuppressWa…

AspNetCms 国内×××聚

国内CMS&#xff1a; 1.SiteServer CMS SiteServer CMS 网站内容管理系统&#xff08;著作权登记号2008SR15710&#xff09;是定位于中高端市场的CMS内容管理系统&#xff0c;能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大的网站平台。…