Javaweb的三大组件:servlet、filter、listener

news/2024/4/28 13:50:20/文章来源:https://blog.csdn.net/weixin_58545784/article/details/131726137

1.前言

        Servlet翻译过来是小服务程序,所以呢,在javaweb中Servlet是用来处理客户端请求的动态资源,一般表示小程序,在实际开发javaweb的过程中使用的比较多一些,通常的使用方法是根据具体的业务需求来继承HttpServlet,最后创建Servlet。Servlet的生命周期是,初始化Servlet调用init()方法——调用服务service()方法进行处理doGet和doPost()方法—最后关闭容器调用destroy()销毁方法。

想要详细了解servlet的小伙伴可以看我之前编写的博客:服务连接器--Servlet

        Filter的字面意思是过滤、筛选,同样Filter是javaweb的过滤器,在javaweb中使用方法大致和Servlet一样,也有三个生命周期,初始化参数创建Filter调用init()方法——拦截到请求时调用doFilter()方法——销毁Filter时调用destroy()方法。但是Filter和Servlet的功能是不一样的,servlet负责处理请求,filter负责拦截请求和放行,可以实现Url级别的权限访问,敏感词汇过滤,解决编码格式问题等等。

        Listener主要是javaweb中的监听器,使用的话,我们需要专门创建一个特定接口的java类,用这个java类去监听另一个java类的方法调用,如果另一个类的属性改变了,前面的java类就会监听到后面java类所发生的变化,监听器中的某个方法就会立刻执行。Listener主要用来监听ServletContext,HttpSession,ServletReques这三个域对象。

2.Filter:过滤器

快速入门
    步骤:
        1. 定义一个类,实现接口Filter
        2. 复写方法
        3. 配置拦截路径
           注解:@WebFilter(" ")

@WebFilter("/*")  //访问所有资源之前都会执行该过滤器
public class filterDemo1 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("filterDemo1.....");//是否放行//放行filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {}
}

 过滤器执行流程
    1. 执行过滤器
    2. 执行放行后的资源
    3. 回来执行过滤器放行代码下边的代码

过滤器生命周期方法
    1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
    2. doFilter:每一次请求被拦截资源时,会执行。执行多次
    3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源

2.1过滤器配置详解

拦截路径配置:
        1. 具体资源路径: /index.jsp   只有访问index.jsp资源时,过滤器才会被执行
        2. 拦截目录: /user/*    访问/user下的所有资源时,过滤器都会被执行
        3. 后缀名拦截: *.jsp     访问所有后缀名为jsp资源时,过滤器都会被执行
        4. 拦截所有资源:/*    访问所有资源时,过滤器都会被执行
拦截方式配置:资源被访问的方式
        注解配置:
            * 设置dispatcherTypes属性
                1. REQUEST:默认值。浏览器直接请求资源
                2. FORWARD:转发访问资源
                3. INCLUDE:包含访问资源
                4. ERROR:错误跳转资源
                5. ASYNC:异步访问资源

2.2过滤器链(配置了多个过滤器)

执行顺序:如果有两个过滤器:过滤器1和过滤器2
    1. 过滤器1
    2. 过滤器2
    3. 资源执行
    4. 过滤器2
    5. 过滤器1 

 过滤器先后顺序问题:
    1. 注解配置:按照类名的字符串比较规则比较,值小的先执行
        如: AFilter 和 BFilter,AFilter就先执行了。
    2. web.xml配置: <filter-mapping>谁定义在上边,谁先执行

3.Listener:监听器

事件监听机制

事件    :一件事情
事件源 :事件发生的地方
监听器 :一个对象
注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码

步骤
    1. 定义一个类,实现ServletContextListener接口
    2. 复写方法
    3. 配置
        1. web.xml
            <listener>
<listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
</listener>
            指定初始化参数<context-param>
        2. 注解:
            @WebListener 

@WebListener
public class ContextLoaderListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {/*** 为监听ServletContext对象所创建的。ServletContext独享服务器启动后自动创建* 在服务器启动后自动调用*/System.out.println("contextInitialized启动了......");}@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {System.out.println("contextDestroyed....已销毁");}
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_331106.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rdkit|分子3D构象生成与优化

github; 地址 文章目录 Rdkit|分子3D构象生成与优化构象生成算法概述基于距离&#xff08;distance-based&#xff09;代码示例 距离几何算法生成3D结构距离几何ETKDG生成3D构象距离几何ETKDG生成多构象将Conformer类转为Mol类手动对齐 距离几何ETKDGMMFF生成3D构象距离几何ETK…

Node.js 版本管理工具 n 使用指南

Node.js 版本更新很快&#xff0c;目前 node v20.x 已经发布&#xff0c;我们在使用时避免不了会需要切换不同的 Node.js 的版本来使用不同版本的特性。 所以就出现了像 windows 上的 nvm&#xff0c;MacOS 上的 n 工具&#xff0c;本文就介绍一下如何使用 n 管理 Node.js 的版…

InsCode Stable Diffusion使用教程【InsCode Stable Diffusion美图活动一期】

记录一下如何使用 InsCode Stable Diffusion 进行 AI 绘图以及使用感受。 一、背景介绍 目前市面上比较权威&#xff0c;并能用于工作中的 AI 绘画软件其实就两款。一个叫 Midjourney&#xff08;简称 MJ&#xff09;&#xff0c;另一个叫 Stable Diffusion&#xff08;简称 …

FPGA——按键控制led灯

文章目录 一、实验环境二、实验任务三、系统设计四、实验过程4.1 编写verilog代码4.2 引脚配置 五、仿真5.1 仿真代码5.2 仿真结果 六、实验结果七、总结 一、实验环境 quartus 18.1 modelsim vscode Cyclone IV开发板 二、实验任务 使用开发板上的四个按键控制四个LED灯。按…

【微信小程序创作之路】- 小程序窗口整体配置(导航栏、标题)

【微信小程序创作之路】- 小程序窗口导航栏配置 第五章 微信小程序窗口导航栏配置 文章目录 【微信小程序创作之路】- 小程序窗口导航栏配置前言一、入口文件的配置二、页面配置三、全局默认窗口配置1.navigationBarTitleText&#xff1a;导航栏标题文字2.navigationBarBackgr…

​​Layui之用户管理实例(对数据的增删改查)

目录 ​编辑一、R工具介绍&#xff08;&#xff09; ​编辑二、数据表的增删改查 ​编辑2.1我们先得从查询数据库的语句入手 2.2优化dao类 2.4UserAction类 2.5前台的页面实现增删改查操作 2.6 userManage页面JS 2.7user新增、修改iframe层js 前言 上一篇我分享了…

SpringCloudAlibaba:消息驱动之RocketMQ学习

目录 一、MQ简介 &#xff08;一&#xff09;什么是MQ &#xff08;二&#xff09;MQ的应用场景 1、异步解耦 2、流量削峰 &#xff08;三&#xff09;常见的MQ产品 二、RocketMQ入门 &#xff08;一&#xff09;RocketMQ安装部署 1、环境要求 2、下载RocketMQ 3、安…

nginx的前端集成

对于springcloud项目&#xff0c;后端我们有很多的微服务&#xff0c;当然前端我们也可以有很多的小项目进行集成 前端项目部署思路 通过nginx来进行配置&#xff0c;功能如下 通过nginx的反向代理功能访问后台的网关资源 通过nginx的静态服务器功能访问前端静态页面 配置ng…

CSS3绘制3D银行卡片层叠展示特效

使用纯css3绘制3D银行卡层叠展示特效 具体示例如下 <template><div><div class"tariffCards"><div class"economy"><img src"../images/css-article-imgs/example-css3D-card/tarcs.png" alt"中信银行" he…

图腾柱电路

驱动MOS或者IGBT管&#xff0c;需要比较大的驱动电流或者灌电流 使用图腾柱电路或许是一个好的办法 电流路径是这样的 当CTL1端口输出为高电平的时候 三极管Q2的2脚为高&#xff0c;三极管Q2不导通 三极管Q1的2脚为高&#xff0c;三极管导通 所以Q1的3脚和1脚导通 VCC--…

Linux线程的生产者消费者模型 --- 阻塞队列(blockqueue)

文章目录 线程同步条件变量条件变量的接口 生产者消费者场景消费者和消费者的关系生产者和生产者的关系生产者和消费者的关系从何体现出效率的提高 Blockqueueblockqueue.hpp为什么条件变量的接口有锁作为参数 CP.cc生产者 -> queue -> 消费者兼生产者 -> queue ->…

【HarmonyOS】Stage模型二维码/条码生成与解析

HarmonyOS的官方API中提供了QRCode组件&#xff08;QRCode-基础组件-组件参考&#xff08;基于ArkTS的声明式开发范式&#xff09;-ArkTS API参考-HarmonyOS应用开发&#xff09;&#xff0c;这个组件有个缺点只能用于显示二维码&#xff0c;无法显示条码与解析码内容&#xff…

【已解决】Flask项目报错TypeError: tuple indices must be integers or slices, not str

文章目录 问题情境报错及分析报错代码分析 解决方案必要的解决方法可能有用的解决方法 问题情境 本解决方案适用情境&#xff1a;在本地可以正常运行的flask项目&#xff0c;放到云服务器报错TypeError: tuple indices must be integers or slices, not str&#xff0c;即代码…

《深度学习推荐系统》笔记

目录 一、推荐系统是什么1.作用和意义2.推荐系统的架构2.1 逻辑架构2.2 技术架构 二、传统的推荐系统方法1. 协同过滤算法1.1 userCF&&ItemCF1.3 矩阵分解算法 2. 逻辑回归算法3. 因子分解机3.1 POLY2模型3.2 FM模型3.3 FFM模型3.4 小结 4. 组合模型4.1 GBDTLR组合模型…

【C++/嵌入式笔试面试八股】二、24.TCP三次握手四次挥手 | TCP可靠性

TCP三次握手四次挥手 64.TCP头部中有哪些信息?❤️ TCP数据报格式(左图) UDP数据报格式也放这(右图),不具体解释了。 结合三次握手四次挥手来看 端口: 区分应用层的不同应用进程 扩展:应用程序的端口号和应用程序所在主机的 IP 地址统称为 socket(套接字),IP:端口…

Docker安装ElasticSearch/ES

目录 前言准备拉取ElasticSearch镜像安装ElasticSearch拉取elasticsearch-head镜像安装elasticsearch-head参考 前言 TencentOS Server 3.1Docker version 19.03.14, build 5eb3275d40 准备 docker 已安装。 安装 docker 参考&#xff1a;【Centos 8】【Centos 7】安装 docke…

基于STM32 ARM+FPGA伺服控制系统总体设计方案(一)

设计需求 一套完整的伺服控制方案包括了上位机、驱控一体控制器和功率板三者。操作人员 通过上位机发送各种不同指令&#xff0c;然后控制器解析指令后执行相应的伺服功能&#xff0c;其次控 制器将驱动信号传输至功率板驱动电机&#xff0c;最后控制器采集反馈信息进行闭环…

了解PostgreSQL sql shell和VACUUM命令

从SQL Shell进入PostgreSQL&#xff1b;没用过这东西&#xff0c;看一下&#xff1b; 一直回车&#xff1b;最后输入口令就登入了&#xff1b;此时是登入默认的数据库postgres&#xff1b;这个数据库是默认安装的&#xff1b; 看一下有没有表&#xff0c;根据资料可以用 \d 或…

大坝安全监测中需要做好检查监测

大坝安全监测是人们了解大坝运行状态和安全状况的有效手段和方法。它的目的主要是了解大坝安全状况及其发展态势&#xff0c;是一个包括由获取各种环境、水文、结构、安全信息到经过识别、计算、判断等步骤&#xff0c;最终给出一个大坝安全 程度的全过程。 此过程包括&#xf…

Linux中常用的监控性能的命令(sar、mpstat,vmstat, iostat,)详解

Linux中常用的监控性能的命令有&#xff1a; sar&#xff1a;能查看CPU的平均信息&#xff0c;还能查看指定CPU的信息。与mpstat相比&#xff0c;sar能查看CPU历史信息 mpstat&#xff1a;能查看所有CPU的平均信息&#xff0c;还能查看指定CPU的信息。 与sar相比&#xff0c…