java之spring mvc之拦截器

1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的。

2. 自定义实现一个拦截器的步骤:

a). 定义一个实现 HandlerInterceptor 接口 的类

public class MyInterceptor implements HandlerInterceptor{/*** 在处理方法之前执行,一般用来做一些准备工作:比如日志,权限检查* 如果返回false 表示被拦截,将不会执行处理方法* 返回true继续执行处理方法*/@Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {System.out.println("执行preHandler---------"+req.getRemoteHost()+req.getRemoteUser());resp.sendRedirect("index.jsp");return false;}/*** 在处理方法执行之后,在渲染视图执行之前执行,一般用来做一些清理工作*/@Overridepublic void postHandle(HttpServletRequest req, HttpServletResponse resp, Object handler, ModelAndView mv)throws Exception {System.out.println("执行postHandler");}/*** 在视图渲染后执行  一般用来释放资源*/@Overridepublic void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {System.out.println("执行afterCompletion");}
}

b) 在 springmvc 的配置文件中 ,添加拦截器配置

<mvc:interceptors><!-- 定义一个拦截器的配置 --><mvc:interceptor><!-- mapping 指定哪些url被拦截 /*表示根路径下的所有请求被拦截-/hello.do/**表示根路径及其子路径下的所有请求被拦截/user/add.do--><mvc:mapping path="/**"/><!-- 配置拦截器的路径 --><bean class="cn.sxt.interceptor.MyInterceptor"></bean></mvc:interceptor></mvc:interceptors>

c) 测试

3. 登录拦截器实现

public class LoginInterceptor extends HandlerInterceptorAdapter{@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {//验证请求的地址是否是登录地址  如果是继续往下执行String uri=request.getRequestURI();uri = uri.substring(uri.lastIndexOf("/")+1);if(uri.equals("login.do")){return true;}//验证session中是否有用户存在 如果有  继续执行if(request.getSession().getAttribute("username")!=null){return true;}//执行跳转到登录页面response.sendRedirect(request.getContextPath()+"/login.jsp");return false;}
}

 

转载于:https://www.cnblogs.com/Vincent-yuan/p/11280240.html

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

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

相关文章

王飞跃谈正来临的第五次工业革命:“未来一定有多个平行的你”

来源&#xff1a;来源&#xff1a;南方周末王飞跃&#xff0c;中国自动化学会副理事长兼秘书长&#xff0c;中科院复杂系统管理与控制国家重点实验室主任。其主要研究领域为智能科学、社会计算、平行系统、知识自动化和复杂系统的建模、分析与管理&#xff0c;是智能控制方面的…

JS_01JavaScript基础笔记

文章目录JavaScript简介JavaScript简介JavaScript发展史JavaScript基础语法JavaScript_语法_与html结合方式JavaScript_语法_注释&数据类型JavaScript_语法_变量JavaScript_语法_变量_typeofJavaScript_语法_一元运算符JS-基本对象FunctionArrayDateMathRegExpGlobalJavaSc…

【一句日历】2019年8月

【2019年8月1日星期四】 没有钱、没有社会地位、没有文化&#xff0c;人很难掌握自己的命运。 ——王小波 【2019年8月2日星期五】 犹太传统认为&#xff0c;有些愤怒是允许的&#xff0c;并且认为这些愤怒是重要的和不可或缺的&#xff0c;那就是对不公正表示愤怒。但是那种毫…

著名的假设“缸中之脑”,我们怎么确定自己不是活在电脑程序中?

来源&#xff1a;科学的乐园看过电影《黑客帝国》吗&#xff0c;或者玩过游戏《恶灵附身》吗&#xff1f;黑客帝国剧照在电影《黑客帝国》中&#xff0c;主角发现自己所在的“现实世界”实际上是由一个计算机人工智能系统控制。也就是说他的世界实际上是一个由程序编码的虚拟世…

01_MySQL基础课堂笔记

文章目录数据库的基本概念MySQL数据库软件SQLDDL:操作数据库、表DML&#xff1a;增删改表中数据DQL&#xff1a;查询表中的记录1.概览2. 基础查询3. 条件查询数据库的基本概念 MySQL数据库软件 安装卸载配置 SQL 数据库的基本概念 1. 数据库的英文单词&#xff1a; DataBa…

excel保存超过15位数据不变科学计数法的方法

1.csv保存超过11位的长数字时会变成科学计数法&#xff0c;通过设置单元格格式通用0可恢复为数字。当长度超过15位时恢复后超过15位的部分全部为零是因为csv只显示15位有效数字&#xff0c;解决办法在输入前先输入英文状态的单引号&#xff0c;然后再输入数字&#xff0c;如果批…

从“诺奖级”成果到“非主观造假”,时隔6年,韩春雨带着原一作,再发高分文章!...

来源&#xff1a;募格课堂、科学网2022年1月21日&#xff0c;河北科技大学韩春雨团队在Nucleic Acids Research&#xff08;IF17&#xff09;在线发表题为“A Cas6-based RNA tracking platform functioning in a fluorescence-activation mode ”的研究论文。在这篇新论文中&a…

02_MySQL约束课堂笔记

文章目录DQL:查询语句排序插叙概览聚合函数分页查询约束非空约束唯一约束主键约束外键约束数据库的设计一对多/多对多/一对一范式数据库的备份和还原数据库的备份和还原1. DQL:查询语句1. 排序查询2. 聚合函数3. 分组查询4. 分页查询2. 约束 3. 多表之间的关系 4. 范式 5. 数据…

SQL Server 2005: Constraints

Moved to http://blog.tangcs.com/2008/05/28/sql-server-2005-constraints/转载于:https://www.cnblogs.com/WarrenTang/archive/2008/05/28/1209123.html

科技热点思考:元宇宙发展及其风险挑战

来源&#xff1a;创新研究2021年10月&#xff0c;坐拥30亿用户的全球社交巨头脸书&#xff08;Facebook&#xff09;更名“Meta”引爆元宇宙概念&#xff0c;2021年成为当之无愧的“元宇宙元年”。企业抢占高地、资本利益冲动、媒体舆论炒作、个体对虚拟世界的向往等多种因素促…

03_MySQL多表事务课堂笔记

文章目录多表查询&#xff1a;多表查询的分类外链接查询子查询子查询不同情况多表查询练习事务对于脏读&#xff0c;不可重复读&#xff0c;幻读的一点理解&#xff0c;看懂红字很关键DCL&#xff1a;1. 多表查询2. 事务3. DCL多表查询&#xff1a; * 查询语法&#xff1a;sel…

CSS每日学习笔记(2)

7.31.2019 1.CSS定位&#xff1a;允许你定义元素框相对于其正常位置应该出现的位置&#xff0c;或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。 CSS 有三种基本的定位机制&#xff1a;普通流、浮动和绝对定位。除非专门指定&#xff0c;否则所有框都在普通流中定位。…

从《黑客帝国》说起,我们如何证明这个世界不是一个系统?

大数据文摘出品来源&#xff1a;nautil尽管《黑客帝国》第四部带给我们的震撼已不如前作&#xff0c;但我们仍能回想起20多年前看第一部时的激动。以及那样的一部作品带给我们的思考。正如在电影开头&#xff0c;尼奥的身体和大脑封锁在一个非模拟世界的吊舱里&#xff0c;与另…

day05_vue路由

文章目录1.路由的概念2.前端路由的初体验3.Vue Router简介4.Vue Router的使用步骤(★★★)5.嵌套路由&#xff0c;动态路由的实现方式A.嵌套路由的概念(★★★)B.动态路由匹配(★★★)7.命名路由以及编程式导航A.命名路由&#xff1a;给路由取别名B.编程式导航(★★★)8.实现后…

QNX下挂载USB设备

你应用命令 #io-usb 之后&#xff0c;应该将你的虚拟机菜单下的"VM”里面有"removable Device” 将列出的设备中你插入的usb设备选择"connect",之后在vmare右下角会有usb设备插入的标志。 此时你再使用 #usb 会显示你插入的usb设备的类型信息&#xff0c;很…

Meta旨在打造世界上最快的人工智能超级计算机

来源&#xff1a;ScienceAI编辑&#xff1a;萝卜皮Facebook 的母公司 Meta 表示&#xff0c;它已经建造了一台世界上最快的研究超级计算机。Meta 研究人员 Kevin Lee 和 Shubho Sengupta 在今天的博客文章中写道&#xff0c;到今年年中&#xff0c;系统的扩展完成后&#xff0c…

day07-vue项目-搭建项目到登录功能

文章目录1.电商业务概述2.项目初始化3.码云相关操作B.安装gitD.在本地创建公钥&#xff1a;在终端运行&#xff1a;ssh-keygen -t rsa -C "xxxxxx.com"4.配置后台项目A.安装phpStudy并导入mysql数据库数据B.安装nodeJS&#xff0c;配置后台项目,从终端打开后台项目vu…

SSE,MSE,RMSE,R-square指标讲解

SSE(和方差、误差平方和)&#xff1a;The sum of squares due to errorMSE(均方差、方差)&#xff1a;Mean squared errorRMSE(均方根、标准差)&#xff1a;Root mean squared errorR-square(确定系数)&#xff1a;Coefficient of determinationAdjusted R-square&#xff1a;D…

互联互通下的超级App价值重构

来源&#xff1a;虎嗅APP题图&#xff1a;视觉中国站在岁末回看&#xff0c;这过去的一年&#xff0c;发生了无数影响深远的事件&#xff1a;反垄断政策落地、用户存量争夺愈演愈烈、商业创新乏力……互联网人突然发现&#xff0c;以往基于流量的增长打法逐渐失灵。与此同时&am…

css_01_承接部分html+css快速入门

文章目录HTML标签&#xff1a;表单标签CSS&#xff1a;页面美化和布局控制概念css与html结合选择器-基础选择器选择器-扩展选择器属性案例&#xff1a;1. HTML标签&#xff1a;表单标签2. CSS&#xff1a;HTML标签&#xff1a;表单标签 * 表单&#xff1a;* 概念&#xff1a;用…