返回顶部
首页 > 资讯 > 精选 >如何进行Java过滤器doFilter里chain.doFilter()函数的理解
  • 665
分享到

如何进行Java过滤器doFilter里chain.doFilter()函数的理解

2023-06-25 16:06:38 665人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关如何进行Java过滤器doFilter里chain.doFilter()函数的理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。对过滤器doFilter里chai

这篇文章将为大家详细讲解有关如何进行Java过滤器doFilter里chain.doFilter()函数的理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

对过滤器doFilter里chain.doFilter()函数的理解

关于chain.doFilter()函数在最近的使用中不是很理解,但是考虑到他是过滤器。过滤器顾名思义就是在执行某件事情的时候开始之前。

开始进行处理的叫做过滤处理。一个方法,一个类就是充当过滤器的角色。它是在一个容器(类似于Tomcat)启动之后,打开一网站,他就会根据配置就行过滤处理。

doFilter()方法就是过滤器的主要方法,init()方法就是在容器启动的时候执行的。doFilter()方法中的chain.doFilter(request,response)方法刚开始还有些不怎么理解。现在有一点明白了。

doFilter(request,response)的方法就是在你打开一个页面当满足过滤器的条件的时候,他就会继续执行你打开页面时候的操作。同时如果你使用了httpservletrequest和HttpservletResponse的话,获取servletPath的值就是你要打开的文件的地址。

例子如下:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ioException, ServletException {        HttpServletRequest req=(HttpServletRequest)request;        HttpServletResponse resp=(HttpServletResponse)response;        String servletPath= req.getServletPath();        HttpSession session=req.getSession();        String flag=(String)session.getAttribute("flag");        if(servletPath!=null&&(servletPath.equals("/03/index.jsp")||servletPath.equals("/03/login.jsp")||servletPath.equals("/loginServlet17"))){            chain.doFilter(request, response);        }else{            if(flag!=null&&flag.equals("login_success")){                chain.doFilter(request, response);              }else if(flag!=null&&flag.equals("login_error")){                req.setAttribute("msg", "登录失败,请重新登录");                req.setAttribute("return_uri", servletPath);                RequestDispatcher rd=req.getRequestDispatcher("/03/login.jsp");                rd.forward(req, resp);            }else{                req.setAttribute("msg","你尚未登录");                req.setAttribute("return_uri", servletPath);                RequestDispatcher rd=request.getRequestDispatcher("/03/login.jsp");                rd.forward(req, resp);            }        }        System.out.println(servletPath);    }

过滤器Filter&&chain.doFilter()

容器在加载的时候,会读取WEB.xml中的<filter></filter>,根据指定的类路径来实例化过滤器。

那么过滤器究竟是用来做什么的呢?

顾名思义,过滤器肯定是过滤我们不想要的东西。所以说执行肯定是在我们访问某个页面之前。所以发散开来,它也可以执行一些我们在访问某个页面,或者某些页面之前想要的操作。

那么:

a.什么是过滤器?过滤器和普通类有什么区别?

如何进行Java过滤器doFilter里chain.doFilter()函数的理解

b.过滤器中的chain.doFilter()起什么作用?

如何进行Java过滤器doFilter里chain.doFilter()函数的理解

所以说chain.doFilter(request,response)是过滤器的必要操作,目的是如果有多个过滤器需要处理同一个url时把请求传给下一个过滤器。

c.过滤器的处理的先后顺序?

<servlet-mapping>      <servlet-name>myServlet</servlet-name>      <url-pattern>/foo*</url-pattern>  </servlet-mapping>    <filter-mapping>      <filter-name>servletFilter</filter-name>      <url-pattern>myServlet</url-pattern>  </filter-mapping>    <filter-mapping>      <filter-name>myFilter</filter-name>      <url-pattern>/foo*</url-pattern>  </filter-mapping>    <filter-mapping>      <filter-name>anotherFilter</filter-name>      <url-pattern>/foo/bar</url-pattern>  </filter-mapping>

如果一个普通的请求访问的URL是/foo/bar,那么它将匹配所有这3个过滤器。过滤器链将由3个过滤器组成,依次为myFilter、anotherFilter,然后是servletFilter。myFilter将在anotherFilter之前执行,因为这是它们出现在部署描述符中的顺序。它们都将在servletFilter之前执行,因为URL映射总是在Servlet名称映射之前执行。

关于如何进行Java过滤器doFilter里chain.doFilter()函数的理解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何进行Java过滤器doFilter里chain.doFilter()函数的理解

本文链接: https://lsjlt.com/news/306039.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行Java过滤器doFilter里chain.doFilter()函数的理解
    这篇文章将为大家详细讲解有关如何进行Java过滤器doFilter里chain.doFilter()函数的理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。对过滤器doFilter里chai...
    99+
    2023-06-25
  • Java过滤器doFilter里chain.doFilter()函数的理解
    目录对过滤器doFilter里chain.doFilter()函数的理解过滤器Filter&&chain.doFilter()对过滤器doFilter里chain.d...
    99+
    2024-04-02
  • java如何使用过滤器进行拦截
    Java中使用过滤器进行拦截的步骤如下:1. 创建一个实现了javax.servlet.Filter接口的过滤器类,例如:```ja...
    99+
    2023-08-18
    java
  • 如何使用 PHP 函数对数据进行排序和过滤?
    php 提供了多种函数对数据排序和过滤,包括 sort()(升序)、rsort()(降序)、array_filter()(根据条件过滤)、array_map()(应用操作)和 array...
    99+
    2024-05-03
    php 数据排序过滤 数据排序 键值对
  • java项目中如何使用 web过滤器对乱码进行处理
    本篇文章为大家展示了java项目中如何使用 web过滤器对乱码进行处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们在servlet页面中读取前台的数据时  经常会出现乱码问题而自己每...
    99+
    2023-05-31
    java web过滤器 乱码
  • 如何在Storm中进行数据流的过滤操作
    在Apache Storm中进行数据流的过滤操作通常需要使用Bolt组件来实现。下面是一个简单的示例代码,演示如何在Storm中进行...
    99+
    2024-04-02
  • mongodb如何对文档内数组进行过滤的方法步骤
    本文介绍了mongodb如何对文档内数组进行过滤的方法步骤,分享给大家,具体如下: mongodb文档内包含数组,需要将数组中符合条件的数据过滤出来并返回结果集,可以用两种方式来查询group或filt...
    99+
    2024-04-02
  • 如何理解布隆过滤器算法的实现原理
    这篇文章主要讲解了“如何理解布隆过滤器算法的实现原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解布隆过滤器算法的实现原理”吧! 布隆过滤...
    99+
    2024-04-02
  • Java函数处理大数据:如何优雅地进行重定向?
    在Java编程中,我们经常需要处理大量的数据。而重定向是一个常用的技术,可以将程序的输出和错误信息写入到文件中,方便后续的分析和处理。本文将介绍如何优雅地进行重定向,并提供相关代码演示。 什么是重定向? 在Java中,重定向是指将程序...
    99+
    2023-08-23
    函数 大数据 重定向
  • 如何在大数据时代应用Java函数进行数据处理?
    在当今的大数据时代,数据处理成为了一项非常重要的工作,而Java作为一门具有广泛应用的编程语言,其函数库也提供了大量用于数据处理的函数,可以帮助我们更高效地进行数据处理。本文将介绍如何在大数据时代应用Java函数进行数据处理,并提供相关演示...
    99+
    2023-09-15
    函数 教程 大数据
  • Java中的数组如何使用函数load进行读取?
    Java中的数组是一种非常常见的数据结构,它可以存储一组相同类型的数据。在Java中,我们可以通过使用函数load来读取数组中的数据。在本文中,我们将会介绍Java中数组的基本知识,并且深入探讨如何使用函数load进行读取。 一、Java中...
    99+
    2023-09-11
    函数 load 数组
  • 如何理解Java中过滤出字母、数字和中文的正则表达式
    如何理解Java中过滤出字母、数字和中文的正则表达式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java中过滤出字母、数字和中文的正则表达式(1)过滤出字母的...
    99+
    2023-06-02
  • Java中如何使用NumPy函数对容器进行操作?
    NumPy是Python中一个流行的数学库,它提供了许多用于数学运算和科学计算的功能。虽然Java不是一种数学语言,但是Java程序员可以使用NumPy库来处理数学运算和科学计算。在本文中,我们将探讨Java中如何使用NumPy函数对容器...
    99+
    2023-07-03
    numy 函数 容器
  • Java中如何使用函数处理大数据并进行重定向?
    在Java编程中,我们经常需要处理大量的数据,这些数据可能来自于文件、网络或数据库等数据源。对于这些数据,我们通常需要进行一系列的操作,比如过滤、排序、统计等。如果我们直接使用循环来处理这些数据,效率会非常低下。因此,在Java中,我们通...
    99+
    2023-08-23
    函数 大数据 重定向
  • C++ 函数调试详解:如何深入了解函数的执行过程?
    c++++ 函数调试的关键技能包括:1. 设置断点以暂停执行;2. 单步执行逐行查看代码;3. 检查变量监视值;4. 打印调试信息查看特定状态。通过实战案例,可以深入了解函数执行过程,快...
    99+
    2024-05-03
    c++ 函数调试
  • 如何进行Python函数装饰器的使用
    如何进行Python函数装饰器的使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。装饰器装饰器的定义关于装饰器的定义,我们先来看一段github上大佬的定义:Functio...
    99+
    2023-06-26
  • 如何进行javascript的防抖节流函数解析
    这期内容当中小编将会给大家带来有关如何进行javascript的防抖节流函数解析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。防抖节流函数的解析认识防抖和节流函数防抖和节流的概念其实最早并不是出现在软件工...
    99+
    2023-06-26
  • C++ 函数重载中的异常处理如何进行?
    c++++ 中重载函数的异常处理遵循单一异常处理点原则。noexcept 规范符用于指定函数是否引发异常:noexcept(true) 表示不引发,noexcept(false) 则表示...
    99+
    2024-04-27
    c++ 异常处理 作用域
  • 大数据处理中不可或缺的Java函数,如何在UNIX环境下进行高效运行?
    随着互联网的快速发展,数据量的爆炸式增长已经成为了一种常态。而在这种背景下,大数据处理已经成为了一种必备技能。而Java作为一种高效的编程语言,在大数据处理中发挥了不可或缺的作用。本文将介绍一些在大数据处理中常用的Java函数,并且教你如...
    99+
    2023-07-24
    unix 函数 大数据
  • 如何进行处理Python对象参数的解析
    这期内容当中小编将会给大家带来有关如何进行处理Python对象参数的解析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Python对象中使用C语言编写的扩展模块,必须将其编译成动态链接库的形式,通常使用...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作