关于过滤器和拦截器的区别,已经spring boot入门(七)中说明。下面举个过滤器的应用场景,比如用户信息页只有再用户登录后才可以进入,没有登录的用户是无法进入的,此时便可以采用过滤器来讲没有登录的用户"过滤"掉。
1.建立filter包,在此包下建立UrlFilter类,此例我们模拟判断用户请求地址是否有误:UrlFilter代码如下:
@WebFilter(filterName = “test”, urlPatterns = “/success/*”)

public class UrlFilter implements Filter {

@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("----------------------->过滤器被创建");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest) servletRequest;String requestURI = req.getRequestURI();System.out.println("--------------------->过滤器:请求地址"+requestURI);if(!requestURI.contains("info")){servletRequest.getRequestDispatcher("/failed").forward(servletRequest, servletResponse);}else{filterChain.doFilter(servletRequest, servletResponse);}}@Overridepublic void destroy() {System.out.println("----------------------->过滤器被销毁");}

}

注意:@WebFilter注解为声明此类为filter,第一个参数为该filter起一个名字,第二个参数为说明要拦截的请求地址。该类实现了Filter接口,里面有三个方法,分别为过滤器创建、过滤方法和过滤器销毁。我们在过滤方法doFilter执行过滤逻辑。同样,在使用注解的方式(即@WebFilter)声明过滤器时,需要再main函数类上添加@ServletComponentScan(basePackages = “此处写明类地址,格式为包名+类名(如com.yxc.*)”),具体代码请见本人博客"spring boot入门(八)"。
2.为使得模拟效果更好,在TestController类中添加了一个接口方法failed,代码如下:
@RequestMapping("/failed")

public Map<String, String> requestFailed(){

Map<String, String> map = new HashMap<>();map.put("code", "-1");map.put("msg", "请求错误");return map;

}

3.其中我们正常访问的接口方法代码如下:

@RequestMapping("/success/info")

public User userInfo(){

User user = new User();user.setUsername("Yansir");user.setPassword("");user.setNickname("cherish");user.setGender("女");user.setAge("1");return user;

}

4.说明一下过滤方法的内容,如果我们访问的地址中包含"info",则正常向下执行即访问/success/info接口,否则,则将请求跳转到/failed接口。
5.测试:首先测试在浏览器输入127.0.0.1:8080/success/info接口,内容如下:

再输入一个错误的接口(但要以success/为请求前路径,因为我们过滤器配置的为此路径下的web资源执行过滤方法),结果如下:

spring boot入门(九) springboot的过滤器filter。最完整、简单易懂、详细的spring boot教程。相关推荐

  1. JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

    Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring?  Spring是分层的Java ...

  2. springboot导入项目依赖报错_最详细的 Spring Boot 多模块开发与排坑指南

    来源于公众未读代码 , 作者达西呀 创建项目 创建一个 SpringBoot 项目非常的简单,简单到这里根本不用再提.你可以在使用 IDEA 新建项目时直接选择 Spring Initlalize 创 ...

  3. SpringBoot 利用过滤器Filter修改请求url地址

    要求: 代码中配置的url路径为http://127.0.0.1/api/associates/queryAssociatesInfo 现在要求http://127.0.0.1/associates/ ...

  4. Spring Boot入门(07):整合 MySQL 和 Druid数据源 | 全网最详细保姆级教学(两万字)

    作者:bug菌 博客:CSDN.掘金.infoQ.51CTO等 简介:CSDN/阿里云/华为云/51CTO博客专家,博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金/ ...

  5. spring cloud入门_Spring Boot 2.x基础教程:快速入门

    简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...

  6. boot入门思想 spring_什么是Spring boot?Spring Boot快速入门以及Spring Boot实例教程

    转自:http://www.jianshu.com/p/d24bceea7665 简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候, ...

  7. 从零开始SpringCloud Alibaba实战(59)——过滤器filter、拦截器interceptor、和AOP的区别与联系及应用

    文章目录 前言 过滤器 拦截器 过滤器与拦截器的区别 AOP(面向切面) 三者使用场景 Filter过滤器 Interceptor拦截器 Spring AOP拦截器 Filter与Intercepto ...

  8. boot入门思想 spring_SpringBoot快速入门

    一.Spring介绍 1.1.SpringBoot简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些 ...

  9. springboot 自定义过滤器

    springboot 自定义过滤器 Filter 过滤器主要是用来过滤用户请求的,它允许我们对用户请求进行前置处理和后置处理,比如实现 URL 级别的权限控制.过滤非法请求等等.Filter 过滤器是 ...

最新文章

  1. java 8 语法糖_Java8的lamada算是一种语法糖吗?
  2. AtCoder Grand Contest 008: Contiguous Repainting(思维)
  3. linux 定时器_定时器: Nodejs 中的 timers
  4. smtp中mailfrom是必须的吗_你是住在高层建筑中吗?这是你必须了解的
  5. Docker 方式安装 zipkin (linux 、阿里云ECS上安装)
  6. c# 结构体 4字节对齐_【专题4:平时遇到的问题】 之 【3.由结构体字节对齐引发的通信故障】...
  7. 32位python和64位python区别_python32位和64位有什么区别
  8. linux路由内核实现分析(四)---路由缓存机制(1)
  9. 仓鼠大厦java下载_仓鼠大厦食盐宫殿 世界古怪酒店TOP10(组图)
  10. 计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
  11. 数据结构之单链表的整表创建头插法
  12. 路由器服务器账号密码,路由器上网账号密码设置的一般步骤介绍
  13. 在html中怎样加圆点,css伪类-小圆点
  14. 使用Python获取股票的基金持仓数据
  15. 基于Raft深度优化,腾讯云金融级消息队列CMQ高可靠算法详解
  16. 龙卷风“掀翻”亚拉巴马州 至少19人死亡
  17. out of synch 不同步是什么意思?
  18. 毕业论文标题和目录生成
  19. 阿里api文档链接地址
  20. 前端云原生——微信小程序云服务配置

热门文章

  1. # 生成单色位二维码图_如何2个小时内学会ps抠图-纯干货
  2. android电容触摸屏的驱动及其上层工作原理,android 电容屏(一):电容屏基本原理篇...
  3. linux设置主机路由的接口,linux – 添加到特定主机的路由会发出特定的接口
  4. linux中的line函数,Linux-shell)
  5. 【script】python多线程模块threading的使用
  6. webform计算某几列结果,如何在C#webform中使用LiveView来垂直显示某些字段,在一个表格中水平显示一些字段作为填写表单?...
  7. php自动发邮件系统,一个简单的自动发送邮件系统(二)_php基础
  8. python runtime错误_Python错误:没有名为RuntimeE的模块
  9. 怎样在html中插入广告,如何在网页中插入广告代码。
  10. 多线程介绍与threading模块应用以及使用Thread类创建多线程