package com.cx.springboot.filters;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter; /**
*
* @作者 陈先生
* @创建时间 2018年6月23日
* @功能描述 自定义过滤器 , 验证登陆信息
*/
@WebFilter(urlPatterns = "/app/*" ) //urlPatterns 配置拦截的路径, 支持多配置
public class LoginFilter implements Filter { /**
* 容器销毁时调用
*/
@Override
public void destroy() {
System.err.println("容器销毁。");
} /**
* 请求被拦截时调用
*/
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
System.err.println("拦截到请求 !" );
String name = request.getParameter("name");
String pwd = request.getParameter("pwd"); if("admin" .equals(name) && "123" .equals(pwd)){
//放行, 执行请求或后续的过滤器
filterChain.doFilter(request, response);
}
else{
//直接返回 或者重定向到登录页面
return ;
}
} /**
* 容器启动时调用
*/
@Override
public void init(FilterConfig arg0) throws ServletException {
System.err.println("容器启动。"); } }

1) 创建类 实现 Filter 接口, 注意是import javax.servlet.Filter; 包下的Filter

2) 实现接口的三个方法
  //容器销毁时调用
  public void destroy() {}

  //url被拦截时调用,处理业务逻辑
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
  throws IOException, ServletException {}

  //容器初始化时调用
  public void init(FilterConfig arg0) throws ServletException {}

3)配置需要过滤路径
  支持多个路径的配置
  @WebFilter(urlPatterns = {"/add/*,"/update/*,"/del/*"} )

  springBoot支持这种配置嘛? 测试不支持!
  @WebFilter(urlPatterns = "/app/get*" )

4) 配置servlet 3.0 的拦截器扫描
  @ServletComponentScan(basePackages={"com.cx.springboot.filters"})
  public class Application1 {}
  在启动类加入@ServletComponentScan 注解, 同时建议配置basePackages属性, 指定需要扫描的包,
  默认不设置的话会扫描所有的包,同时basePackages 属性也是支持多配置的

spingBoot-自定义过滤器的更多相关文章

  1. 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...

  2. lucene自定义过滤器

    先介绍下查询与过滤的区别和联系,其实查询(各种Query)和过滤(各种Filter)之间非常相似,可以这样说只要用Query能完成的事,用过滤也都可以完成,它们之间可以相互转换,最大的区别就是使用过滤 ...

  3. asp.net MVC之 自定义过滤器(Filter) - shuaixf

    一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration :缓存的时间, 以 ...

  4. angular之自定义过滤器的使用

    自定义过滤器需要使用filter函数,格式如下: filter("filterName',function(){ return function(target,args){ .... } } ...

  5. 第六节:Vue过滤器的用法和自定义过滤器

    1.过滤器的用法,用  '|' 分割表达式和过滤器. 例如:{{ msg |  filter}}     {{msg | filter(a)}}  a就标识filter的一个参数. 用两个过滤器:{{ ...

  6. .net中自定义过滤器对Response内容进行处理

    原文:http://www.cnblogs.com/zgqys1980/archive/2008/09/02/1281895.html 代码DEMO:http://files.cnblogs.com/ ...

  7. asp.net MVC之 自定义过滤器(Filter)

    一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration:缓存的时间,以秒为 ...

  8. Vue自定义过滤器

    gitHub地址: https://github.com/lily1010/vue_learn/tree/master/lesson05 一 自定义过滤器(注册在Vue全局) 注意事项: (1)全局方 ...

  9. 关于angularjs 中自定义过滤器

    包子认为,在angularjs中,经常需要用到自定义过滤器,来过滤相应的功能,自定义过滤器非常的简单,我就直接贴代码啦 其中input就是你需要进行操作的对象,,,用法就直接就是 是不是很easy.. ...

  10. MVC 自定义过滤器/特性来实现登录授权及验证

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    最近在做自学MVC,遇到的问题很多,索性一点点总结 ...

随机推荐

  1. jstat分析JVM内存

    zabbix: Jstat:gcutil:Old space utilization(%) S0  — Heap上的 Survivor space 0 区已使用空间的百分比S1  — Heap上的 S ...

  2. csu 1548(三分)

    1548: Design road Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: 383  Solved: 200[Submit][Status][We ...

  3. 专题-Delphi/C++ Builder多线程编程与调试

    [目录] Delphi.C++ Builder多线程程序编码调试的一点经验谈 多线程程序的填坑笔记和多线程编程应该遵循的规则(天地弦) 多线程编程中死锁问题的跟踪与解决 临界.多重读独占写多线程同步测 ...

  4. Ubuntu16.4 修改静态ip地址

    root@temple-102:~# ifconfig eno1 Link encap:Ethernet HWaddr 0c:c4:7a:e6:49:74 UP BROADCAST MULTICAST ...

  5. 使用Unity解耦你的系统—PART4——Unity&PIAB

    在前面几篇有关Unity学习的文章中,我对Unity的一些常用功能进行介绍,包括:Unity的基本知识.管理对象之间的关系.生命周期.依赖注入等,今天则是要介绍Unity的另外一个重要功能——拦截(I ...

  6. 在linux通过kubeadm搭建kubernetes群集

    kubeadm是一个命令行的工具,它简化了创建和管理kubernetes cluster的步骤.kubeadm利用Docker的功能进行快速的部署,支行kubernetes master和etcd服务 ...

  7. elementUI 学习入门之 input 输入框

    基础用法 <el-input v-model="input1" palcehoder="请输入"></el-input> var Mai ...

  8. JAVA编程思想读书笔记(一)--面向对象

    第二章 一切都是对象 No1: 程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1) 寄存器.这是最快的保存区域,因为它位于和其他所有保存 ...

  9. Linux下c++常用调试

    进程调试 自己写的代码,直接gdb r/bt就可以了. 正在运行的进程,先ps ax找到进程id.然后gdb进入之后attach 进程id.stop/continue暂停和继续进程. core了,有c ...

  10. JSON与Javabean转换的几种形式

    JSON格式的数据传递是最常用的方法之一,以下列出了常用的几种形态以及与Javabean之间的转换: String json1="{'name':'zhangsan','age':23,'i ...