JavaWeb两大组件FILTERLISTENER

news2024/11/24 0:55:38

一.Filter:过滤器

是什么:
当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。
作用:
一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤…

具体流程:
原始:
定义一个类,实现接口Filter
在这里插入图片描述

					@Override
public void init(FilterConfig filterConfig) throws ServletException { }
					@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
     System.out.println("filterDemo1被执行了...."); //放行
​     filterChain.doFilter(servletRequest,servletResponse);
 }
					 @Override
 public void destroy() {}

对于拦截器
配置web.xml

			<filter>
    <filter-name>demo1</filter-name>
    <filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
</filter>
<filter-mapping>
    <filter-name>demo1</filter-name>
	<!-- 拦截路径 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>

注解:
@WebFilter(“/*”)//访问所有资源之前,都会执行该过滤器
过滤器配置详解
拦截路径配置

  1. 具体资源路径: /index.jsp 只有访问index.jsp资源时,过滤器才会被执行
  2. 拦截目录: /user/* 访问/user下的所有资源时,过滤器都会被执行
  3. 后缀名拦截: *.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行
  4. 拦截所有资源:/* 访问所有资源时,过滤器都会被执行

拦截方式配置:资源被访问的方式
设置dispatcherTypes属性

  1. REQUEST:默认值。浏览器直接请求资源
  2. FORWARD:转发访问资源
  3. INCLUDE:包含访问资源
  4. ERROR:错误跳转资源
  5. ASYNC:异步访问资源

执行流程:
1. 执行过滤器
2. 执行放行后的资源
3. 回来执行过滤器放行代码下边的代码
过滤器生命周期方法
1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
2. doFilter:每一次请求被拦截资源时,会执行。执行多次
3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
过滤器链(配置多个过滤器)
执行顺序:如果有两个过滤器:过滤器1和过滤器2
1. 过滤器1
2. 过滤器2
3. 资源执行
4. 过滤器2
5. 过滤器1
过滤器先后顺序问题
1. 注解配置:按照类名的字符串比较规则比较,值小的先执行
* 如: AFilter 和 BFilter,AFilter就先执行了。
2. web.xml配置: 谁定义在上边,谁先执行

增强对象的功能(代理模式)
概念:
1. 真实对象:被代理的对象
2. 代理对象:
3. 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
实现方式
静态代理:有一个类文件描述代理模式
动态代理:在内存中形成代理类
实现步骤:
1. 代理对象和真实对象实现相同的接口
2. 代理对象 = Proxy.newProxyInstance();
3. 使用代理对象调用方法。
4. 增强方法
增强方式:
1. 增强参数列表
2. 增强返回值类型
3. 增强方法体执行逻辑

二.LISTENER:监听器

设什么:web的三大组件之一
做什么:事件监听机制
	* 事件	:一件事情
	* 事件源 :事件发生的地方
	* 监听器 :一个对象
	* 注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码
ServletContextListener:监听ServletContext对象的创建和销毁
	方法
		* void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
		* void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法
注解:
	* @WebListener
web.xml
	<listener>
	<listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
	</listener>

案例:
在这里插入图片描述
在这里插入图片描述
资源自行下载
数据库以及表的设计:
create database Demo; – 创建数据库
use Demo; – 使用数据库
create table user( – 创建表
id int primary key auto_increment,
name varchar(20) not null,
gender varchar(5),
age int,
address varchar(32),
qq varchar(20),
email varchar(50)
);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地部署 FastChat

本地部署 FastChat 1. 什么是 FastChat2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 FastChat6. 使用命令行进行推理7. 使用 Web GUI 服务进行推理8. 使用 Lora 进行训练9. 其他 文章还在创作中。。。 1. 什么是 FastChat FastChat 是一个开放平台&#xff0c;用…

同步和异步、同步复位、异步复位、同步释放(Verilog、Verdi、DC综合)

文章目录 1.同步和异步2. 同步复位、异步复位、同步释放2.1 同步复位2.1.1 Verilog code2.1.2 Verdi waveform2.1.3 DC Synthesis 2.2 异步复位2.2.1 Verilog code 2.3 同步释放&#xff08;异步信号和CLK信号存在时序检查、Recover time&Removel time&#xff09;2.4 异步…

初识Docker:(7)查询Docker镜像的DockerFile

1. 前言 我们知道了根据dockerfile来制作镜像&#xff0c;如果给你一个现成的镜像&#xff0c;你能逆向查看出dockerfile吗&#xff1f; 否则&#xff0c;你怎么知道该镜像使用的是CMD还是ENTRYPOINT &#xff0c;使用的是shell格式还是CMD格式&#xff1f;由于格式决定了doc…

numpy反向传播算法示例

numpy反向传播算法示例 数据 通过 scikit-learn 库提供的便捷工具生成 2000 个线性不可分的 2 分类数据集 按着7: 3比例切分训练集和测试集 backpropagation.py #!/usr/bin/env python # encoding: utf-8 """ desc: 反向传播算法 """impor…

leetcode电话号码的字母组合C++实现教程

链接: 电话号码的字母组合 class Solution {char* PNumStr[10] {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};//因为每次都需要执行拷贝&#xff0c;…

了解嵌入式系统的不同细分领域:探索嵌入式BSP的定义

嵌入式BSP是指嵌入式系统中的板级支持软件。它是针对特定硬件平台的软件包&#xff0c;提供了操作系统和硬件之间的抽象层&#xff0c;以便开发人员可以更方便地使用硬件功能和编写应用程序。 嵌入式BSP的功能包括&#xff1a; 设备初始化和配置&#xff1a;BSP负责初始化硬件设…

学做测试平台开发-Vuetify 框架

Vuetify 是 Vue 的语义化组件框架&#xff0c;旨在提供整洁、语义化和可重用的组件&#xff0c;使得构建应用程序更方便。 Vuetify 核心是为了提供各种可重复使用的&#xff0c;即插即用并且适合各种项目规格的组件。 Vue 的语义成分。利用 Vue 的功能组件&#xff0c;所有基…

kubectl port-forward 指令

背景&#xff1a; 当K8s的Service类型为ClusterIP&#xff0c;不是NodePort&#xff0c;就只能集群内部访问&#xff0c;想在外部访问可以执行kubectl port-forward&#xff0c;将一个或多个本地端口转发到 Pod或者Service 作用&#xff1a; 做转发&#xff0c;将本地端口转发…

使用 fitter 拟合数据分布

一、简介 前面的文章中通过假设对比来检验样本是否服从泊松分布。得出的结论是总体分布不服从泊松分布&#xff0c;那么如何找到与总体分布最接近的分布呢&#xff1f;不可能一个个分布去验证。这里便可以用到 fitter 这个库。 fitter 是一个小型的第三方库&#xff0c;提供了…

【粉丝投稿】一文带你了解MySQL的左连接与右连接

前言&#xff1a; 昨天粉丝问了一个问题&#xff0c;因此本篇文章主要讲解MySQL的左连接和右连接的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c;对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小…

LeetCode——从上到下打印二叉树 II

题目来源 剑指 Offer 32 - II. 从上到下打印二叉树 II - 力扣&#xff08;LeetCode&#xff09; 题目 从上到下按层打印二叉树&#xff0c;同一层的节点按从左到右的顺序打印&#xff0c;每一层打印到一行。 示例 给定二叉树&#xff1a;[3,9,20,null,null,15,7] 返回其层…

vuex2实现时间列表选择器

目录 一、效果展示 二、代码分析 2.1、区域确定与坐标获取 2.2、单个点击与一次性点击 一、效果展示 主要借助自定义指令实现。在表格的"td们"上面进行移动框选&#xff0c;有一次性框选和单个框选&#xff0c;去掉自定义指令里的clearTargetNodes()会连续td,连…

Hudi学习5:Hudi的helloworld-编译源码

hudi是使用java代码编写的 部署hudi 1. 下载源码 Download | Apache Hudi https://dlcdn.apache.org/hudi/0.13.1/hudi-0.13.1.src.tgz 2.编译 安装maven 首先要先有JDK java8以上 配置镜像源 执行编译 测试

Yolov5小目标性能提升方案介绍

目录 1.小目标检测介绍 1.1 小目标定义 1.2 难点 2.小目标难点解决方案 2.1注意力提升小目标检测精度 2.1.1 上下文信息CAM 2.1.2 ConvNeXt 2.1.3 ECVBlock 2.1.4 多头上下文集成&#xff08;Context Aggregation&#xff09;的广义构建模块 2.2 多头检测头 2.3 loss优化…

spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property

spring 在容器中一个bean依赖另一个bean 需要通过ref方式注入进去 通过构造器 或property

Go语言net模块TCP和UDP编程实践

任何一种语言TCP和UDP网络编程总是必须的&#xff0c;接下来就将go语言中使用net标准库进行TCP和UDP编程进行梳理总结。 目录 1.代码结构 2.TCP通信 3.UDP通信 4.TCP模拟HTTP协议通信 5.利用TCP扫描那些端口被占用 1.代码结构 2.TCP通信 server.go package mainimport …

【正点原子STM32连载】 第四十八章 内存管理实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第四…

全志V3S嵌入式驱动开发(spi-nand image制作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 上一篇文章,我们说到了spi-nor image的制作和输入。相比较spi-nor,spi-nand虽然在稳定性上面差一点,但是价格上面有很大的优势。举例来说,一般32M的spi-nor大约在6-7元左右,但…

Springboot链接Redis实现AOP防止重复提交

目录 安装redis Springboot链接Redis 1.创建springboot项目 如果spring boot启动报Error creating bean with name redisUtil/redisTemplate 2.新建application.yml配置 3.redis配置类-直接用 4.redis工具类-直接用 5.写Controller测试 6.启动、测试 整合AOP&#xff…

内网横线移动—WmiSmbCrackMapExecProxyChainsImpacket

内网横线移动—Wmi&Smb&CrackMapExec&ProxyChains&Impacket 1. 前置环境准备2. wmic介绍2.1. wmic操作演示2.1.1. 受控主机上线2.1.1.1. 内网存活探测2.1.1.2. 密码抓取 2.1.2. 横向移动2.1.2.1. 上传文件2.1.2.2. 文件上传目标主机2.1.2.3. 执行木马 2.2. wmi…