返回顶部
首页 > 资讯 > 后端开发 > Python >详细了解java监听器和过滤器
  • 196
分享到

详细了解java监听器和过滤器

2024-04-02 19:04:59 196人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1、介绍:2、作用域对象:Servt规范扩展-----------过滤器接口1、介绍:2、具体作用:3、Filter接口实现类的开发步骤:三步第一步:创建一个java类实现Fil

1、介绍:

1)一组来自于Servlet规范下的接口,共有8个接口。在Tomcat中存在于Servlet-api.jar

2)监听器接口需要由开发人员亲自实现,Http服务器提供的jar中并没有对应的实现类

3)监听器接口用于监控【作用域对象生命周期的变化时刻】以及【作用域对象共享数据的变化时刻】

2、作用域对象:

1)在Servlet规范中,认为在服务端内存中可以在某些条件下为两个Servlet之间提供数据共享方案的对象,被称为【作用域对象】

2)在Servlet规范下的作用域对象:

ServletContext:全局作用域对象

httpsession:会话作用域对象

HttpServletRequest:请求作用域对象

3、监听器接口实现类开发规范:三步

1)根据监听的实际情况,选择对应的监听器接口进行实现

2)重写监听器接口中声明的【监听事件处理方法】

3)在web.xml文件中将监听器接口实现类注册到Http服务器中

4、ServletContextListener

1)作用:通过这个接口合法的检测全局作用域对象的两个时刻

被初始化时刻 被销毁时刻

2)监听事件处理方法

public void contextInitialized():在全局作用域对象被Http服务器初始化是调用

public void contextDestroyed():在全局作用域对象被Http服务器销毁时调用

5、ServletContextAttributeListener接口:

1)作用:通过这个接口合法的检测全局作用域对象共享数据变化的时刻

2)监听事件处理方法:

public void contextAdded():在全局作用域对象添加共享数据时调用

public void contextReplaced():在全局作用域对象更新共享数据时调用

public void contextRemoved():在全局作用域对象删除共享数据时调用

6、全局作用域对象共享数据变化时刻

ServletContext application=request.getServletContext();

application.setAttribute("key1",100); //新增共享数据

application.setAttribute("key1",200); //更新共享数据

application.removeAttribute("key1"); //删除共享数据

代码实现

以下就以ServletContextListener接口和ServletContextAttributeListener接口

第一步:选择ServletContextListener接口进行实现

第二步:重写监听器接口声明的【监听事件处理方法】


public class OneListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Initialized............");
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Destroyed.............");
    }
}

第三步:在web.xml中将监听器接口实现类注册到Http服务器中


<listener>
    <listener-class>school.xauat.listener.OneListener</listener-class>
</listener>

由于ServletContext【全局作用对象的生命周期】贯穿网站的整个运行期间

Servlet之间数据共享中有具体的ServletContext生命周期

因此在Tomcat服务器启动过程时,执行contextInitialize()方法

Initialized............

在Tomcat服务器准备关闭时,执行contextDestroyed()方法

Destroyed.............

第一步:选择ServletContextAttributeListener接口进行实现

第二步:重写监听器接口声明的【监听事件处理方法】


public class OneListener implements ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        System.out.println("ServletContextAttribute is added......");
    }
    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae){
        System.out.println("ServletContextAttribute is removed......");
    }
    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae){
        System.out.println("ServletContextAttribute is replaced......");
    }
}

第三步:在web.xml文件中将监听器接口实现类注册到Tomcat服务器中


<servlet>
    <servlet-name>OneServlet</servlet-name>
    <servlet-class>school.xauat.controller.OneServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>OneServlet</servlet-name>
    <url-pattern>/one</url-pattern>
</servlet-mapping>
<listener>
    <listener-class>school.xauat.listener.OneListener</listener-class>
</listener>

监听事件


public class OneServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //通过请求对象获取全局作用域对象
        ServletContext application=request.getServletContext();
        //向全局作用域对象中添加共享数据
        application.setAttribute("key",100);
        //更改全局作用域对象中的共享数据
        application.setAttribute("key",500);
        //删除全局作用域对象中的共享数据
        application.removeAttribute("key");
    }
}

运行结果

Servt规范扩展-----------过滤器接口

1、介绍:

1)来自于Servlet规范下的接口,在Tomcat中存在于servlet-api.jar包中

2)Filter接口实现类由开发人员负责提供的,Http服务器不负责提供

3)Filter接口会在Http服务器调用资源文件之前,对Http服务器进行拦截

2、具体作用:

1)拦截Http服务器,帮助Http服务器去检测当前请求的合法性

2)拦截Http服务器,对当前请求进行增强操作

3、Filter接口实现类的开发步骤:三步

1)创建一个java类实现Filter接口

2)重写Filter接口中的doFilter方法

3)在web.xml文件中将过滤器接口实现类注册到Http服务器

过滤器检测请求合法性

第一步:创建一个java类实现Filter接口

第二步:重写doFilter接口中的doFilter()方法



public class OneFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //通过拦截的请求对象来得到请求包中的参数信息,从而得到来访用户的真实年龄
        String age=servletRequest.getParameter("age");
        //根据这个年龄帮助我们的Http服务器判断本次请求的合法性
        if(Integer.valueOf(age)<70){
            //将拦截请求对象和相应对象交换给Tomcat,由Tomcat继续调用资源文件
            filterChain.doFilter(servletRequest,servletResponse);
        }else{
            //过滤器代替Http服务器拒绝本次请求
            servletResponse.setContentType("text/html;charset=utf-8");
            PrintWriter out=servletResponse.getWriter();
            out.print("<center><font style='color:red;font-size:40px'>不合适!!!!</font></center>");
        }
    }
}

第三步:在web.xml文件中将过滤器接口实现类注册到Http服务器


<!--将过滤器类文件交给Tomcat-->
<filter>
    <filter-name>OneFilter</filter-name>
    <filter-class>school.xauat.filter.OneFilter</filter-class>
</filter>
<!--通知Tomcat在调用何种资源文件是需要被当前过滤器拦截-->
<filter-mapping>
    <filter-name>OneFilter</filter-name>
    <url-pattern>/mm.jpg</url-pattern>
</filter-mapping>

过滤器对请求对象进行增强服务

当有多个以post的请求访问服务器时,需要对每个Servlet接口实现类中doPost()方法进行以下操作,增加的开发的难度。

response. setCharacterEncoding("utf-8")

以下展示过滤器的作用:

第一步:创建java实现Filter接口

第二步:重写Filter接口下的doFilter()方法


public class OneFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

第三步:在web.xml文件中将过滤器接口实现类注册到Http服务器


<servlet>
        <servlet-name>OneServlet</servlet-name>
        <servlet-class>school.xauat.controller.OneServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OneServlet</servlet-name>
        <url-pattern>/one</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>TwoServlet</servlet-name>
        <servlet-class>school.xauat.controller.TwoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TwoServlet</servlet-name>
        <url-pattern>/two</url-pattern>
    </servlet-mapping>
    <!--注册Filter类-->
    <filter>
        <filter-name>OneFilter</filter-name>
        <filter-class>school.xauat.filter.OneFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OneFilter</filter-name>
        <!--通知Tomcat在调用所有资源文件之前都需要调用OneFilter进行拦截-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

OneServlet


public class OneServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //通过请求对象获取请求体中的请求参数
        String userName=request.getParameter("userName");
        System.out.println("OneServlet----->"+userName);
    }
}

TwoServlet


public class TwoServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //通过请求对象获取请求体中的请求参数
        String userName=request.getParameter("userName");
        System.out.println("TwoServlet---->"+userName);
    }
}

4、Filter拦截地址的格式

1)命令格式:

<filter-mapping>

<filter-name><OneFilter/filter-name>

<url-pattern>拦截地址</url-pattern>

</filter-mapping>

2)命令作用:

拦截地址通知Tomcat在调用和何种资源文件之前需要调用OneFilter过滤进行拦截

3)要求Tomcat在调用某一个具体文件之前,来调用OneFilter进行拦截

<url-pattern>/目录/文件名</url-pattern>

4)要求Tomcat在调用某一个文件夹下所有的资源文件之前,来调用OneFilter进行拦截

<url-pattern>/目录/*</url-pattern>

5)要求Tomcat在调用任意文件夹下的某种类型文件之前,来调用OneFilter拦截

<url-pattern>*.jpg</url-pattern>

6)要求Tomcat在调用网站中任意文件时,来调用OneFilter拦截

<url-pattern>/*</url-pattern>

总结

本篇文章就到这里了,希望能给你带来帮助,也希望你能够多多关注编程网的更多内容!

--结束END--

本文标题: 详细了解java监听器和过滤器

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

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

猜你喜欢
  • 详细了解java监听器和过滤器
    目录1、介绍:2、作用域对象:Servt规范扩展-----------过滤器接口1、介绍:2、具体作用:3、Filter接口实现类的开发步骤:三步第一步:创建一个java类实现Fil...
    99+
    2024-04-02
  • Filter过滤器和Listener监听器详解
     Filter过滤器和Listener监听器详解Filter过滤器Filter的简介 对资源的访问进行过滤,相当于小区的保安,进去要检查,出去还要检查。Filter的使用编写一个类,继承并实现javax.servlet.Filte...
    99+
    2023-05-31
    filter 过滤器 listener
  • JavaWeb的监听器和过滤器你了解吗
    目录1.监听器---->Context,Session2.监听器三大作用域3.属性监听器4.过滤器4.1过滤器的使用4.2过滤器的拦截路径4.3过滤器的拦截顺序4.4过滤器的四...
    99+
    2024-04-02
  • 深入了解Java中的过滤器Filter和监听器Listener
    目录Filter:过滤器概念快速入门过滤器细节Listener:监听器Filter:过滤器 概念 生活中的过滤器:净水器,空气净化器,土匪、 web中的过滤器:当访问服务器的资源时,...
    99+
    2024-04-02
  • JavaWeb开发中过滤器和监听器使用详解
    目录1 Filter1.1 Filter简介1.2 Filter的快速入门1.2.1 创建Filter类1.2.2 访问index.jsp1.3 Filter的拦截路径的配置1.4 ...
    99+
    2022-11-13
    JavaWeb过滤器 JavaWeb监听器
  • java中的监听器和过滤器是什么
    本篇内容介绍了“java中的监听器和过滤器是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录介绍:作用域对象:Servt规范扩展---...
    99+
    2023-06-20
  • JavaWeb的监听器和过滤器是什么
    这篇文章主要为大家展示了“JavaWeb的监听器和过滤器是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaWeb的监听器和过滤器是什么”这篇文章吧。1.监听器---->Conte...
    99+
    2023-06-29
  • SpringBoot2.0(过滤器,监听器,拦截器)
    目录 一,过滤器1.1,自定义Filter1.2,启动类代码1.2,创建filter类和LoginFilter包1.2.1,编写loginFilter类 过滤器代码1.2.2,创建二个Cont...
    99+
    2023-09-16
    spring boot
  • Java中的过滤器Filter和监听器Listener怎么使用
    本文小编为大家详细介绍“Java中的过滤器Filter和监听器Listener怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中的过滤器Filter和监听器Listener怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-02
  • 基于java中servlet过滤器和监听器的示例分析
    小编给大家分享一下基于java中servlet过滤器和监听器的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1 过滤器1.过滤器是什么?servlet规范当中定义的一种特殊的组件,用于拦截容器的调用.注:容器收到请...
    99+
    2023-05-31
    java servlet
  • Java过滤器与监听器间区别与联系
    目录过滤器自定义过滤器拦截器和过滤器的区别监听器过滤器 过滤器可以对 Web 服务资源进行过滤,过滤静态资源如静态 HTML、CSS、JS、IMG 等,过滤动态资源如 JSP、Ser...
    99+
    2023-01-30
    Java过滤器与监听器 Java过滤器 Java监听器
  • Java拦截器,过滤器,监听器的简单原理和区别
    一、简单原理 拦截器(Interceptor):在Spring MVC等框架中,拦截器主要用于在处理Controller方法前后添加特定的处理逻辑。 过滤器(Filter):过滤器是基于Java Servlet的一种组件,它主要...
    99+
    2023-10-29
    监听器 过滤器 区别
  • 如何在Java项目中使用过滤器、拦截器和监听器
    如何在Java项目中使用过滤器、拦截器和监听器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个...
    99+
    2023-05-31
    java 拦截器 过滤器
  • Vue监听使用方法和过滤器实现
    目录前言过滤器局部过滤器代码全局过滤器watch监听简单监听复杂监听前言 今天是自学VUE整理知识点的第四天呢,今天整理一下过滤器,watch监听的知识点 过滤器 过滤器的作用:为页...
    99+
    2024-04-02
  • Vue计算属性与侦听器和过滤器超详细介绍
    目录1. 计算属性1.1 使用方法1.2 案例-购物车合计使用计算属性2. 侦听器3. 过滤器1. 计算属性 1.1 使用方法 概述: 模板中放入太多的逻辑会让模板过重且难以维护,使...
    99+
    2024-04-02
  • Java过滤器Filter详解
    目录Filter学习Filter功能Filter的工作原理多个Filter的实现Filter的执行逻辑总结Filter学习 Filter功能 拦截jsp、静态图片文件、静态html资源文件 实现URL级别的权限访问控制 ...
    99+
    2019-04-25
    Java过滤器 Filter
  • Java Web过滤器详解
    过滤器是什么玩意?所谓过滤器,其实就是一个服务端组件,用来截取用户端的请求与响应信息。过滤器的应用场景:1.对用户请求进行统一认证,保证不会出现用户账户安全性问题编码转换,可在服务端的过滤器中设置统一的编码格式,避免出现乱码对用户发送的数据...
    99+
    2023-05-31
    java web 过滤器
  • 深入理解JavaWeb中过滤器与监听器的应用
    目录过滤器Filter过滤器声明过滤器生命周期监听器ListenerListener声明实例过滤器Filter Filter过滤器能够对匹配的请求到达目标之前或返回响应之后增加一些处...
    99+
    2023-05-20
    JavaWeb过滤器与监听器 JavaWeb过滤器 JavaWeb监听器
  • Java基础 Servlet监听器详解
    Java基础 Servlet监听器详解 1 概念:Servlet监听器,用来监听web容器的一些对象状态的变化,主要是ServletContext、HttpSession、HttpServletRequestl三类对象状态。Ser...
    99+
    2023-05-31
    java servlet ava
  • 如何实现Java监听器详解
    目录一、前言二、监听器模型三、案例实现四、测试一、前言 监听器就是监听事件源是否发生了某一个事件,当发生指定监听的事件时事件源会向已注册的监听器发送消息对象。监听器可以获得事件对象进...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作