【电商项目实战】拦截器(详细篇)

news/2024/5/8 19:14:23/文章来源:https://blog.csdn.net/qq_43514330/article/details/126317629

在这里插入图片描述
🍁博客主页:👉@不会压弯的小飞侠
欢迎关注:👉点赞👍收藏留言
系列专栏:👉SpringBoot电商项目实战
学习社区: 👉不会压弯的小飞侠
知足上进,不负野心。
🔥欢迎大佬指正,一起学习!一起加油!

在这里插入图片描述

目录

  • 🍁 拦截器
  • 🔥 HandlerInterceptor
  • 🔥WebMvcConfigurer
  • 🔥 在项目中添加拦截器功能
  • 🔥测试


🍁 拦截器

  • 在Spring MVC中拦截请求是通过处理器拦截器HandlerInterceptor来实现的,它拦截的目标是请求的地址。在Spring MVC中定义一个拦截器,需要实现HandlerInterceptor接口。
  • 拦截器:首先将所有的请求统一拦截到拦截器中,可以拦截器中来定义过滤的规则,如果不满足系统的设置的过滤规则,统一的处理是重新去打开login.html页面(重定向和转发),推荐使用重定向。
  • 在SpringBoot项目中拦截器的定义和使用。SpringBoot是依靠springMVC来完成的。SpringMVC提供了一个HandlerInterceptor接口,用于表示定义一个拦截器。受限制自定义个类,在这个类实现这个接口
  • 1.首先自定义一个类,在这个类实现这个Handlerlnterceptor接口。
  • 2.注册过滤器:
  • 添加白名单
    • 可以在不登录的情况下访问
    • login.html\register.html\login\register\index.html\product.html
  • 添加黑名单
    • 在用户登录的状态才可以访问的页面资源。
  • 3.注册过滤器的技术:借助WebMvcConfigure接口,可以将用户定义的拦截器进行注册,才可以保证拦截器能够生效和使用。定义一个类,然后让这个类实现WebMvcConfigure接口。配置信息,建议存放在项目的config包结构下。|

🔥 HandlerInterceptor

  • preHandle()方法
    • 该方法将在请求处理之前被调用。
  • postHandle()方法
  • 该方法将在当前请求进行处理之后,也就是Controller方法调用之后执行,但是它会在DispatcherServlet进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller处理之后的ModelAndView对象进行操作。
  • afterCompletion()方法
  • 该方法将在整个当前请求结束之后,也就是在DispatcherServlet渲染了对应的视图之后执行。

🔥WebMvcConfigurer

  • WebMvcConfigurer接口中的核心方法之一addInterceptors(InterceptorRegistry registry)方法表示添加拦截器。主要用于进行用户登录状态的拦截,日志的拦截等。
    • addInterceptor:需要一个实现HandlerInterceptor接口的拦截器实例
    • addPathPatterns:用于设置拦截器的过滤路径规则;addPathPatterns(“/**”)对所有请求都拦截
    • excludePathPatterns:用于设置不需要拦截的过滤规则

🔥 在项目中添加拦截器功能

  • 分析:项目中很多操作都是需要先登录才可以执行的,所以应使用拦截器解决该问题。
  • 创建拦截器类com.jkj.interceptor.LoginInterceptor,并实现HandlerInterceptor接口。
/** 定义处理器拦截器 */
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if (request.getSession().getAttribute("uid") == null) {response.sendRedirect("/web/login.html");return false;}return true;}
}
  • 创建LoginInterceptorConfigurer拦截器的配置类并实现WebMvcConfigurer接口,配置类需要添加@Configruation注解修饰。
/** 注册处理器拦截器 */
@Configuration
public class LoginInterceptorConfigurer implements WebMvcConfigurer {/** 拦截器配置 */@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 创建拦截器对象HandlerInterceptor interceptor = new LoginInterceptor();// 白名单List<String> patterns = new ArrayList<String>();patterns.add("/bootstrap3/**");patterns.add("/css/**");patterns.add("/images/**");patterns.add("/js/**");patterns.add("/web/register.html");patterns.add("/web/login.html");patterns.add("/web/index.html");patterns.add("/web/product.html");patterns.add("/users/register");patterns.add("/users/login");patterns.add("/districts/**");patterns.add("/products/**");// 通过注册工具添加拦截器registry.addInterceptor(interceptor).addPathPatterns("/**").excludePathPatterns(patterns);}
}

🔥测试

  • 启动项目:
  • 在浏览器输入:localhost:8080/web/product.html
  • 测试结果:直接放行,不进行拦截

在这里插入图片描述


学习视频:

【SpringBoot项目实战完整版】SpringBoot+MyBatis+MySQL电脑商城项目实战-哔哩哔哩】
https://b23.tv/qGh9x9L

在这里插入图片描述

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

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

相关文章

Python tkinter 制作一个经典的登录界面和点击事件

前言Tkinter(即 tk interface) 是 Python 标准 GUI 库,简称 “Tk”;从本质上来说,它是对 TCL/TK 工具包的一种 Python 接口封装。Tkinter 是 Python 自带的标准库,因此无须另行安装,它支持跨平台运行,不仅可以在 Windows 平台上运行,还支持在 Linux 和 Mac 平台上运行…

怎样在LaTeX中方便输入带圆圈的数字

这个也是这两天修改别人论文的时候得到的经验。正如这里所说&#xff1a;latex 如何添加圆圈数字&#xff1f;_Tsingke的博客-CSDN博客 如果使用\textcircled&#xff0c;数字编号大的时候&#xff0c;数字会跑到圆圈外面。但是上面这篇博客的解决方案太复杂了&#xff0c;就像…

电子数据取证-流程与技术

推荐公众号&#xff1a;安全猎人 专注于全栈攻防&#xff0c;学习笔记等&#xff1b; 原文url&#xff1a;https://mp.weixin.qq.com/s/hwpBcp-55ycXnSdObEffGg 电子数据取证流程与技术 根据某大佬经验&#xff0c;汇总出一系列取证流程、理论和模型&#xff1b; 在模型中&am…

pacman 升级软件包提示 “failed to commit transaction (invalid or corrupted package)“

很久没打开 WSL 2 里面的 Arch Linux, 想着更新一下软件包, 执行 pacman -Syu, 遇到 “signature is marginal trust” “failed to commit transaction (invalid or corrupted package)” 等错误. 观察输出的信息, 似乎提到了 “签名” “信任” 的问题 (signature … is marg…

快鲸智慧楼宇:助力商业地产快速实现数字化转型升级

作为国内领先的商业地产运营管理数字化服务商&#xff0c;快鲸搭建了集资产管理、合同管理、租客管理、财务管理、招商管理、物业管理等一套完整的 “商办招商营销管理空间资产运营管理租客运营服务体系”&#xff0c;致力于打造全场景商办地产标准化运营管理平台。 该平台具备…

C++之二叉树进阶|搜索树|key/value模型

&#x1f427;主页详情&#xff1a;Choice~的个人主页 &#x1f4e2;作者简介&#xff1a;&#x1f3c5;物联网领域创作者&#x1f3c5; and &#x1f3c5;阿里专家博主&#x1f3c5; and &#x1f3c5;华为云享专家&#x1f3c5; ✍️人生格言&#xff1a;最慢的步伐不是跬步&…

线程与进程的关联

上篇博客 我们说了进程 下面我来用一个我们回忆一下 其实啊 进程在频繁的创建 / 销毁的时候 是非常低效的 -因为创建的时候 要给进程分配资源(内存/文件) 赋值到CPU上 是一个大活 所以 有了线程 那咱们已经很了解进程了 直接说 线程 与 进程 的区别: 对比进程线程1包含线程2…

微服务项目:尚融宝(14)(前端平台:尚融宝管理系统路由配置)

认清现实&#xff0c;放弃幻想&#xff0c;准备斗争 一、组件定义 1、创建vue组件 在src/views文件夹下创建以下文件夹和文件 2、core/integral-grade/list.vue <template><div class"app-container">积分等级列表</div> </template> 3、…

文章组合生成-免费文章组合生成软件

文章组合生成软件&#xff0c;今天给大家分享一款免费的文章组合工具&#xff0c;自动从组文章生成段落目录详细参考图片。 网络的速度让一切的信息都是尽可能快的传达&#xff0c;为了给用户供给新鲜的信息&#xff0c;搜索引擎也是不断的增加抓取内容的频率&#xff0c;但是蜘…

设计模式-概述. 类图.软件设计原则详细讲解

1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中&#xff0c;而是被用于建筑领域的设计中。 1990年软件工程界开始研讨设计模式的话题&#xff0c;后来召开了多次关于设计模式的研讨会。直到1995 年&#xff0c;艾瑞克伽马&#xff08;ErichGamm…

kafka原理解读

一、Kafka Kafka是一个分布式的消息系统。 二、解决问题 消息系统通常被应用于异步处理、应用解耦、流量削峰、消息通信等场景。 异步处理 生产者将消息写入消息队列中&#xff0c;消费者异步拉取消息队列消息&#xff0c;从而提升消息处理能力。 应用解耦 Kafka作为消息传递…

【Linux操作系统】-- 多线程(三)-- 线程池+单例模式+读写者模型

目录 线程池 场景 代码实现 线程安全的单例模式 懒汉实现方式和懒汉实现方式 饿汉方式实现单例模式 懒汉方式实现单例模式 实战代码演练单例模式 读者写者模型 解释 基本操作 创建/销毁读写锁 读者锁和写者锁 解锁 伪代码理解读写锁 优先级 挂起等待锁vs自旋锁…

关于我在字节跳动青训营做了个抖音这件事

一、实践介绍 1.1项目核心信息 本项目实现了影视综艺榜单及其历史数据查询&#xff0c;实现个人页面展示、个人页面粉丝和关注列表、个人页面已发布视频列表及其详情页 1.2项目服务地址 https://github.com/gujunhe/douyin 1.3GitHub地址 https://github.com/gujunhe/dou…

centos8同步时间安装时间校准服务

多余的话都写在教程的后面&#xff0c;直接进入下面的操作命令。下面所有的操作都必须使用root账户来操作。切记。 #1. 查看当前时间 date#2. 添加wlnmp源 rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm#3. 安装ntp服务 yum install wntp#4. 时间…

Python爬虫之Js逆向案例(10)-爬虫数据批量写入mysql数据库

最近收到小伙伴们的私信&#xff0c;说如何将爬取的数据批量存到数据库中&#xff1f;数据入库也是童鞋们必须掌握的技能&#xff01;数据回来之后&#xff0c;肯定需要存放&#xff0c;实效高、数量少的可能大多存放在cvs文件中&#xff0c;通常情况都是要存放到数据库的&…

[JS入门到进阶] 7条关于 async await 的使用口诀,新学 async await?背10遍,以后要考!快收藏

我是HullQin&#xff0c;公众号线下聚会游戏的作者&#xff08;欢迎关注公众号&#xff0c;发送加微信&#xff0c;交个朋友&#xff09;&#xff0c;转发本文前需获得作者HullQin授权。我独立开发了《联机桌游合集》&#xff0c;是个网页&#xff0c;可以很方便的跟朋友联机玩…

蓝牙音响插着电源线就会一直有电流声怎么回事呢 All In One

蓝牙音响插着电源线就会一直有电流声怎么回事呢 All In One蓝牙音响插着电源线就会一直有电流声怎么回事呢 All In One周围存在电源的电磁干扰 ✅之前使用 USB 集线器的旁边上有一个电源插板,估计是收到了电磁干扰了 ❌直接使用电脑自带的 USB 接口连接即可 🚀refs https://…

软件测试概念总结

软件测试1.软件测试&#xff1a;2.软件测试的特点&#xff1a;3.软件测试和开发的区别&#xff1a;4.软件测试与调试的区别&#xff1a;5.优秀的软件测试人员具备的素质6.核心竞争力7.学习方法8.学习内容9.需求的概念10.用户需求11.软件需求12.生成测试用例的过程13.为什么需求…

GO语言自学_001_环境配置_windowx11_x64版本

GO语言自学_001_环境配置_windowx11_x64版本下载地址: https://golang.google.cn/ 1、看到那个下载按钮了么?点她!2、点击download到这个页面,根据电脑自身系统配置下载包。3、下载完毕后,运行.msi文件,一路next就可以了。本人电脑默认下载到C:\Program Files\Go路径。需要…

创建员工表格,遍历数组获取每个员工,并且渲染到表格中

首先是CSS部分,根据需求添加属性,可以调整 再是盒子部分 接下来是js部分:重点就是JS部分,利用遍历数组获取每个员工,再进行渲染,注意for下面的console.log( ` 这里面有一个标点符号千万别忘记(叫反引号 是 Shrit +ESC下面这个键) ` ) 实际效果图