小滴课堂-学习笔记: Javaweb开发核心知识之Filter过滤器

【JavaWeb】过滤器 Filter Tomcat10 过滤器Filter的使用,接口API,生命周期,xml与注解配置Filter,过滤器链 阅读详情

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 初识Servlet过滤器Filter

第2集 Servlet Filter 配置参数详解

第3集 过滤器实战之Filter用户登录访问个人页面拦截

干货文档


第1集 初识Servlet过滤器Filter

简介:讲解JavaWeb核心知识之过滤器Filter

  • 什么是过滤器:(检验是否符合要求,或者 对内容做二次处理,设置编码响应等)

    • filter简单理解:人--->检票员(filter)---> 景点

     

  • Servlet里面的过滤器作用

    • 动态地拦截请求和响应,变换或使用包含在请求或响应中的信息
    • 在客户端的请求访问后端资源之前,拦截这些请求。
    • 在服务器的响应发送回客户端之前,处理这些响应。

     

  • Filter的生命周期

    • init(FilterConfig filterConfig) //只容器初始化的时候调用一次,即应用启动的时候加载一次
    • doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 只要命中过滤规则就触发,可以在filter中根据条件决定是否调用chain.doFilter(request, response)方法, 即是否让目标资源执行
    • destroy() //只容器销毁的时候调用一次,即应用停止的时候调用一次

     

  • 元注解: @WebFilter




//该Filter是否支持异步操作模式
asyncSupported      
​
//指定Filter对那种dispatcher模式进行过滤 该属性支持 Async,Error Forward,include,request  
dispatcherType  
​
//Filter 显示的名称
displayName    
​
//Filter的名称
filterName    
​
//Filter的配置参数
initParams    
​
//过滤的Servlet可以指定多个,表示对这几个特定的的servlet 进行过滤
servletNames    
​
//指定 Filter拦截的 URL,和上面的servletNames配置一样,用*可以表示通配符,但是不用字母后加*,应该按照模块划分,比如/user/*
urlPatterns/value    


  • 过滤器拦截实战



@WebFilter(filterName = "xxx",urlPatterns = {"/*"})
public class CustomFilter implements Filter {
​
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    
        System.out.println("CustomFilter init ");
    
    }
    
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    
        System.out.println("CustomFilter doFilter ");
    
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
    
        //让请求继续往下走
        chain.doFilter(request,response);
    }
    
    @Override
    public void destroy() {
    
        System.out.println("CustomFilter destroy ");
    }
}



第2集 Servlet Filter 配置参数详解

简介:讲解JavaWeb核心知识之过滤器Filter

  • FilterConfig类:

    • 过滤器配置类,可以通过这个获取过滤器基本信息

     

  • dispatcherTypes 参数

    • 指定Filter对那种dispatcher模式进行过滤,不符合的则不进行过滤

      • REQUEST:默认值,浏览器直接请求的资源会被过滤器拦截
      • FORWARD:转发访问资源会被过滤器拦截
      • INCLUDE:包含访问资源
      • ERROR:错误跳转资源
      • ASYNC:异步访问资源
  • 实操




@WebFilter(filterName = "xxx",urlPatterns = {"/*"},initParams = {
        @WebInitParam(name = "encoding",value = "UTF-8"),
        @WebInitParam(name = "loginPage",value = "/login.jsp"),
},dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})
​
public class CustomFilter implements Filter {
    private FilterConfig filterConfig;
​
    private String encoding;
    
    private String loginPage;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    
        System.out.println("CustomFilter init ");
        this.filterConfig = filterConfig;
    
        String filterName = filterConfig.getFilterName();
        System.out.println("filterName="+filterName);
        this.encoding = filterConfig.getInitParameter("encoding");
        this.loginPage = filterConfig.getInitParameter("loginPage");
    }
    
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    
        System.out.println("CustomFilter doFilter ");
    
        request.setCharacterEncoding(encoding);
        response.setCharacterEncoding(encoding);
        response.setContentType("text/html;charset=utf-8");
    
        //让请求继续往下走
        chain.doFilter(request,response);
    }
    
    @Override
    public void destroy() {
    
        System.out.println("CustomFilter destroy ");
    }
}


 

第3集 过滤器实战之Filter用户登录访问个人页面拦截

简介:过滤实战之用户登录访问订单页面

  • 开发登录Servlet



   @Override
      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
​
          String name = req.getParameter("name");
          String pwd = req.getParameter("pwd");
      
          if(name.equals("xdclass") && pwd.equals("123")){
      
              User user = new User();
              user.setId(121);
              user.setName(name);
              user.setHost("xdclass.net");
              req.getSession().setAttribute("loginUser",user);
              req.getRequestDispatcher("/WEB-INF/user.jsp").forward(req,resp);
      
          }else{
              req.setAttribute("msg","账号密码错误");
              req.getRequestDispatcher("/login.jsp").forward(req,resp);
          }
​
  
​
      }
  • 开发登录过滤器

    
    
    
    @WebFilter(filterName = "loginFilter",urlPatterns = {"/user/*","/order/*"},initParams = {
            @WebInitParam(name = "encoding",value = "UTF-8"),
            @WebInitParam(name = "loginPage",value = "/login.jsp"),
    })
    ​
    public class LoginFilter implements Filter {
    ​
        private FilterConfig filterConfig;
        
        private String encoding;
        
        private String loginPage;
    ​
    @Override
      public void init(FilterConfig filterConfig) throws ServletException {
      
          System.out.println("CustomFilter init ");
          this.filterConfig = filterConfig;
      
          this.encoding = filterConfig.getInitParameter("encoding");
          this.loginPage = filterConfig.getInitParameter("loginPage");
      
      }
      
      @Override
      public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
      
          System.out.println("CustomFilter doFilter ");
      
          request.setCharacterEncoding(encoding);
          response.setCharacterEncoding(encoding);
          response.setContentType("text/html;charset=utf-8");
      
          HttpServletRequest httpServletRequest = (HttpServletRequest)request;
          HttpServletResponse httpServletResponse = (HttpServletResponse)response;
      
          //session里面有用户信息
          if(httpServletRequest.getSession().getAttribute("loginUser") !=null){
      
              chain.doFilter(request,response);
      
          }else {
              httpServletRequest.setAttribute("msg","非法访问,请登录");
              httpServletRequest.getRequestDispatcher(loginPage).forward(httpServletRequest,httpServletResponse);
          }
      
      }
    @Override
      public void destroy() {
      
          System.out.println("CustomFilter destroy ");
      }
      
        }
    

     

  • 登录界面 login.jsp

    
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    ​
    <head>
        <title>Title</title>
    </head>
    ​
    <body>
     <form action="<%=request.getContextPath()%>/loginServlet" method="post">
    名称:<input type="text" name="name"/>
    ​
    <br/>
    密码:<input type="password" name="pwd"/>
    ​
    <input type="submit" value="登录">
    ​
    消息提示 ${msg}
    ​
    </form>
    ​
    </body>
    </html>
    
    
    

     

  • 用户信息界面/user.jsp

    
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
      id:${loginUser.id}
      <br>
      name:${loginUser.name}
    ​
      <a href="/logout_servlet">退出</a>
      </body>
      </html>
    
    
    

     

干货文档

                                                        关注公众号发送:“优快云干货文档”  即可领取

Filter(过滤器) 过滤器的基本概念Servlet 过滤器从字面可理解为经过一层层的过滤处理才达到使用的要求,而其实 Servlet 过滤器就是服务器与客户端请求与响应的中间层组件。在实际项目开发中 Servlet 过滤器主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源。FilterFilter(过滤器)是 JavaWeb 三大组件之一(另外两个是 Servlet 和 Listener),是在 2000 年发布的 Servlet2.3 规范中加入的一个接口,是 Servlet 规范中非常实用的技术。 阅读详情

相关推荐

Nginx_SSM_springcloud_小滴课堂笔记.rar

小滴课堂笔记_含(Nginx_SSM_springcloud,有Nginx、Spring SpringMVC Mybatis、SpringCloud)

Java 过滤器 @WebFilter 详解

WebFilter注解是JavaEE中的一种注解,用于标识一个类为过滤器(Filter)。过滤器用于对请求进行过滤和处理,可以在请求到达目标资源之前或之后执行一些操作。使用**@WebFilter**注解可以将一个类声明为过滤器,并指定过滤器的名称、URL模式、Servlet名称等。

Mr_superman_liu的博客 9981

小滴课堂-海量数据处理商用短链平台大课-资料xiaoecf

短链平台技术栈 ● 微服务技术:新版SpringCloudAlibaba全家桶+SpringBoot2.5+Nacos2.x+MybatisPlus ● 缓存+MQ中间件+调度:Redis6.X+RabbitMQ+Zookeeper+Kafka + XXLJob ● 海量数据分库分表+文件存储:Mysql8.0+ShardingSphere多维度分库分表 + 阿里云OSS ● 实时计算+数据处理+存储可视化:Flink1.13 + ClickHouse + HDFS + 数据清洗分层 + Echart可视化数据 ● 分布式链路追踪+监控+持久化存储:Apache Skywalking + ElasticSearch7.X ● 上线部署:Jenkins CICD + 阿里云Git仓库+ 阿里云ECS CentOS7 + Rancher2.5 + 容器编排调度 ● 高级测试必备生产环境流量压测:Jmeter5.X单接口压测+混合流量录制+流量压测扩大重放

获取web.xml参数初始化数据&servlet3.0注解

目录 通过web.xml获取编码参数初始化数据 注解实现Servlet配置和初始化数据 通过web.xml获取编码参数初始化数据 在web.xml中配置编码格式,在servlet初始化init()时候获取xml中编码参数。 request.setCharacterEncoding("utf-8");代码的耦合度太⾼,不便于后期维护修改。可以通过初始化参 数实现 实现⽅式: 1.局部初始化参数 (1)web.xml中先定义初始化参数 <servlet...

你好啊cbw 1805

【低空经济】低空无人驾驶航空器运行管理系统设计方案

低空无人驾驶航空器运行管理系统(以下简称“系统”)旨在为低空域内的无人驾驶航空器(UAV)提供高效、安全、智能的运行管理服务。系统通过集成先进的通信、导航、监控、数据处理和人工智能技术,实现对低空域内无人驾驶航空器的实时监控、动态调度、风险评估和应急响应,确保其在复杂空域环境中的安全运行。系统的核心功能包括空域管理、飞行计划审批、实时监控、冲突预警、应急管理和数据分析。空域管理模块负责划分和管理低空域资源,确保不同飞行任务之间的空域隔离和高效利用。

2502_92579126的博客 1140

Meta-World环境实战解析:pick-place-v2中的状态观测与动作控制

本文深入解析了Meta-World中pick-place-v2环境的强化学习实战要点。文章详细拆解了39维状态观测向量的构成与意义,包括机械臂末端、物体位置及目标坐标,并揭示了默认部分可观测设置的潜在影响。同时,阐述了4维动作空间的控制逻辑与奖励函数的分阶段设计,为训练高效稳定的抓放策略提供了核心指导与实用调优技巧。

weixin_29184371的博客 76

Java web笔记 (13) -- Filter 过滤器详解

一. 概念: 生活中的过滤器:净水器,空气净化器,土匪、 web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 过滤器的作用:一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤… 二. 快速入门: 1. 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 web.xml 注解 2. 实现: JSP页面 最终输出 如果我不放行的话,只会出现空白页面。 ...

qq_43507104的博客 458

模拟IC设计避坑:手把手教你用Cadence仿真恒定跨导轨到轨运放(附完整工艺库文件)

本文详细解析了使用Cadence仿真恒定跨导轨到轨运放的全流程,涵盖电路原理、工艺库配置、尺寸设计及仿真分析。通过1:3电流镜补偿技术实现跨导稳定,提供CSMC 0.25um工艺下的实战案例,帮助工程师规避设计陷阱,提升模拟IC设计效率。

weixin_30952535的博客 493

过滤器Filter--编码转换案例

在登录案例的基础上 1.采用注解,设置转换的编码 @LoginFilter 重点内容 @WebFilter(dispatcherTypes = {DispatcherType.REQUEST } , urlPatterns = "/*" ,initParams={ @WebInitParam(name="charset",value="utf-8")}) publi

hello,today! 624

蒙特卡洛+概率潮流!基于蒙特卡洛和新能源出力模拟的概率潮流分布程序代码!

最后,导出光照强度、风速、网损和节点电压的概率分布图,并计算了各节点电压和网损的平均值和方差,展示了接入前后的节点电压对比图。在不确定性增加的电力系统中,概率潮流成为含随机因素规划问题的求解前提,可以更加真实地反映电力系统的全面信息。此外,概率潮流还可用于研究风电和光伏发电出力以及电动汽车消耗功率和向电力系统反向供电功率的不确定性对电力系统的影响,发现系统运行中的潜在风险,为系统运行控制提供参考。概率潮流的目的是揭示电网中随机变量对系统的影响,发现电网中的薄弱环节,为规划和调度部门的决策提供有价值的信息。

weixin_48747334的博客 1918

CST周期边界仿真:揭秘频率选择表面(FSS)单元设计全流程

本文详细解析了CST周期边界仿真在频率选择表面(FSS)单元设计中的应用全流程。从理论基础到工程实践,涵盖了求解器选择、几何建模、边界设置、端口优化等关键步骤,并提供了常见问题排查指南。通过CST仿真技术,工程师能够高效预测FSS的电磁特性,为实际应用提供可靠的设计依据。

weixin_30571465的博客 356

Javaweb开发核心知识之Filter过滤器

简介:讲解JavaWeb核⼼心知识之过滤器器Filter什么是过滤器器:(检验是否符合要求,或者 对内容做⼆二次处理理,设置编码响应等)Servlet⾥面的过滤器器作⽤Filter的生命周期。

weixin_67996964的博客 779

8155源码编译DSP(ubuntu环境下)

一.设置环境变量 -users:/$ sudo gedit ~/.bashrc #set adsp cdsp tools path #export ARMLMD_LICENSE_FILE=<LICENSE FILE INFO> #export ARMTOOLS=RVCT221 #export ARMROOT=/pkg/asw/compilers/arm/ADS1.2 #export ARM_COMPILER_PATH=/pkg/qct/software/arm/RVDS/2.2BLD593

Johnny2004的专栏 1676

Javaweb核心之servlet规范过滤器-----Filter

Javaweb核心之servlet规范过滤器-----Filter

楠黎倾风的博客 1万+

嵌入式工程师成长之路(5)——板子调试

USB2514集线器调试总结说说USB连接线USB数据线上的“疙瘩”:原来有这么大用处!

云轩阁 4万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JavaWeb学习(6)(核心三大组件、过滤器(Filter)原理、配置过滤器与error页面)

本篇博客的内容:JavaWeb的核心三大组件(Servlet、Filter、Listener)的介绍、过滤器(Filter)的原理、Filter生命周期方法、实现过滤器(Filter)、XML或注解配置过滤器(Filter)、多个过滤器的执行顺序(XML或使用注解)、过滤器的几种拦截方式与error(错误)页面的配置...

岁岁岁平安的博客 1721

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

javaweb之Filter(过滤器)

Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。Servlet 我们之前都已经学习过了。想要了解的同学可以观看我之前的博客JavaWeb之Servlet(1)和JavaWeb之Servlet(2)Request&Response。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。如下图所示,浏览器可以访问服务器上的所有的资源(servlet、jsp、html等)

xrkhy的博客 1252

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别

过滤器与拦截器的区别,过滤器是JavaWeb的三大核心组件之一,它是用来拦截请求的,拦截到请求之后执行相应的逻辑决定是否放行该请求,从而实现一些特殊功能。注意:过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。类似于过滤器。Spring框架中提供的,用来动态拦截controller层方法的执行。过滤器隶属Web容器,定义一个过滤器需实现Filter接口,并加入"/x")注解指定拦截路径。

Panci_的博客 2340

【JavaWeb学习 | 第19篇】Filter过滤器

本文详细地讲解了JavaWeb中的重要内容:Filter过滤器

在代码与逻辑的星河里,捡拾技术的微光 1254

JavaWeb 开发的核心基础知识

JavaWeb 开发的核心基础知识,掌握这些内容可以胜任基本的 JavaWeb 开发工作

weixin_46261399的博客 1055

Filter过滤器

过滤器(Filter)用于根据预定义的条件对输入数据进行筛选,只保留满足条件的数据项。这个过程类似于在现实生活中使用筛子筛选谷物,去除杂质,留下纯净的部分。在计算机科学中,过滤器通常接收一个数据集作为输入,并返回一个新的数据集,其中包含原始数据集中符合特定标准的元素。是 JavaWeb三大组件(Servlet、Filter、Listener)之一。

2302_77758423的博客 2381

小滴课堂-新版JavaWeb零基础到实战专题课程-10

简介:讲解JavaWeb核心知识之过滤器Filter什么是过滤器:(检验是否符合要求,或者 对内容做二次处理,设置编码响应等)Servlet里面的过滤器作用Filter的生命周期元注解: @WebFilter 简介:讲解JavaWeb核心知识之过滤器FilterFilterConfig类:dispatcherTypes 参数指定Filter对那种dispatcher模式进行过滤,不符合的则不进行过滤实操 简介:过滤实战之用户登录访问订单页面 开发登录过滤器 登录界面 login.js

xdclass888的博客 161

Web核心技术之Filter过滤器

1,Filter 1.1 Filter概述 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。Servlet 我们之前都已经学习过了,Filter和Listener 我们今天都会进行学习。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。 如下图所示,浏览器可以访问服务器上的所有的资源(servlet、jsp、html等) 而在访问到这些资源之前可以使过滤器拦截来下,也就是说在访问资源之前会先经过 Filter,如下图 拦截器拦截到

helpluozhao123的博客 4855
上一篇: 小滴课堂-学习笔记:玩转会话跟踪技术Cookie 和 session
下一篇: 小滴课堂-学习笔记:大型项目包管理技术之Maven3.x快速入门
dev666
博客等级 码龄9年 100粉丝 106原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值