1 创建拦截器  SessionInterceptor


import com.springboot.demo.pojo.UserModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class SessionInterceptor implements HandlerInterceptor {private static final Logger log = LoggerFactory.getLogger(SessionInterceptor.class);/*** 进入controller层之前拦截请求* @param request* @param response* @param o* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {log.info("---------------------开始进入请求地址拦截----------------------------");UserModel user = (UserModel) request.getSession().getAttribute("user");if (user == null) {response.sendRedirect(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath() + "/login");return false;}return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {log.info("--------------处理请求完成后视图渲染之前的处理操作---------------");}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {log.info("---------------视图渲染之后的操作-------------------------0");}}

2 配制拦截器以及拦截规则


import com.springboot.demo.interceptor.SessionInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configuration
public class SessionConfiguration extends WebMvcConfigurerAdapter {/*** 添加拦截器* @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {/*** addPathPatterns 用于添加拦截规则* excludePathPatterns 用于排除拦截*/registry.addInterceptor(new SessionInterceptor()).addPathPatterns("/**").excludePathPatterns("**/app/**");}/*** 配置静态资源* @param registry*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {super.addResourceHandlers(registry);registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");registry.addResourceHandler("/templates/**").addResourceLocations("classpath:/templates/");}
}

3 目录结构

4 启动服务 访问 http://localhost:8080/users/list

Springboot06配制拦截器相关推荐

  1. struts2自定义拦截器一——模拟登陆权限验证

    1.http://localhost:8083/struts2/user.jsp 表示用户已登陆,存放session对象 2.http://localhost:8083/struts2/quit.js ...

  2. [JAVA EE] 拦截器

    拦截器 ◼ 拦截器(Interceptor)主要用于拦截用户请求并作相应的处理. ◼ 基于Java的反射机制,属于面向切面编程(AOP)的一种运用. ◼ 应用场景:验证用户登录状态.权限验证.记录系统 ...

  3. SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景

    一.拦截器简介 1.拦截器定义 拦截器,请求的接口被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略. 拦截器主要用来按照指定规则拒绝请求. 2.拦截器中应用 Token令牌 ...

  4. spring 两次进入拦截器_4.SpringBoot 拦截器Fliter,Interceptor,Controller……

    在项目的开发中,在某些情况下,我们需要对客户端发出的请求进行拦截,常用的API拦截方式有Fliter,Interceptor,ControllerAdvice以及Aspect. 上面的图是Spring ...

  5. MySQL拦截器获取xml id_关于mybatis拦截器,有谁知道怎么对结果集进行拦截,将指定字段查询结果进行格式化...

    用MyBatis结果集拦截器做过这样一个需求: 由于项目需求经常变动,项目MySQL数据库都是存放JSON字符串,例如:用户的基本信息随着版本升级可能会有变动 数据表 CREATE TABLE `ac ...

  6. list mybatis 接收 类型_基于mybatis拦截器实现的一款简易影子表自动切换插件

    近期因工作需要,小编基于mybatis拦截器开发了一款简易影子表自动切换插件,可以根据配置实现动态修改表名,即将对原source table表的操作自动切换到对target table表的操作.该插件 ...

  7. Struts2的拦截器只允许有权限用户访问action

    1.定义拦截器,继承MethodFilterInterceptor package com.life.stuts.interceptor;import java.util.Map;import com ...

  8. php 类中的各种拦截器

    1.__get( $property ) 访问未定义的属性时调用 class lanjie {function __get($name){echo $name." property not ...

  9. druid拦截器_CMS基于SpringBoot+Shiro+Mybatis+Druid+layui后台管理系统

    contentManagerSystem后台管理系统 简介 contentManagerSystem,后台管理系统,采用SpringBoot构建整个项目框架,apacheShiro权限验证,mybat ...

最新文章

  1. Python判断一个字符串是否包含子串的几种方法
  2. vue 监听表格里的数据变化_vue中监听数据变化 watch
  3. VC++实现恢复SSDT
  4. linux 查看sql进程id,根据进程的ID取得该进程的SQL脚本
  5. 约瑟夫环的数学优化方法
  6. tcp ip协议笔记(1)——简单介绍
  7. jq查找字段忽略html标签,jQuery过滤HTML标签并高亮显示关键字的方法
  8. python数据分类方法_Python数据挖掘—分类—贝叶斯分类
  9. Linux服务器备份mySQL数据库_远程linux服务器mysql数据库定期备份和删除
  10. 茶百科 android代码,基于android平台手机茶百科开发设计---学位论文.doc
  11. cf1063A Oh Those Palindromes (贪心)
  12. mkfs.ext3 快速格式化_求救!固态硬盘格式化不了!
  13. Spring AOP中Introduction的使用
  14. JS简单实现京东网页轮播图
  15. leetcode第一题
  16. 做个自己站内搜索引擎
  17. 质量体系建设——质量sense
  18. 二进制空间权重矩阵_白话空间统计之二十五:空间权重矩阵(三)解构空间权重矩阵...
  19. <Input />输入框及input的相关属性
  20. 弹性盒子display:flex——justify-content主轴方向对齐方式、align-items交叉轴对齐方式、 flex-direction修改主轴方向、flex-wrap换行

热门文章

  1. DivideMix: Salesforce提出使用半监督学习大幅改进含噪声标签的学习
  2. NeurlPS 2019丨微软亚洲研究院 5 篇精选论文解读
  3. 视觉推理新杀器!英特尔新一代VPU性能翻10倍,反超英伟达
  4. 游戏美术是什么?真的有“钱”景吗?
  5. 顶尖学府 加州伯克利大学开发高效机器人操纵框架
  6. 《Python编程从入门到实践》记录之类存储在模块及其导入
  7. 译文 | 与TensorFlow的第一次接触 第四章:单层神经网络
  8. 自动驾驶车辆转向控制(通过支持转角控制的EPS实现角速度控制)
  9. oracle表与表之间更新,Oracle 两个表之间更新的实现
  10. 常见数据库默认端口号