当前位置:网站首页>web三大组件(Servlet,Filter,Listener)
web三大组件(Servlet,Filter,Listener)
2022-04-23 10:54:00 【yueseck】
目录
一、Servlet
二、Filter
1.概念
* 生活中的过滤器:净水器,空气净化器,土匪、
* web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。
* 过滤器的作用:
* 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...
2.步骤
1. 定义一个类,实现接口Filter
2. 复写方法
3. 配置拦截路径
1. web.xml
2. 注解
3.代码
@WebFilter("/*")//访问所有资源之前,都会执行该过滤器
public class FilterDemo1 implements 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() {
}
}
4.过滤器细节
4.1web.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>
4.2过滤器执行流程
1. 执行过滤器
2. 执行放行后的资源
3. 回来执行过滤器放行代码下边的代码
4.3过滤器配置详解
* 拦截路径配置:
1. 具体资源路径: /index.jsp 只有访问index.jsp资源时,过滤器才会被执行
2. 拦截目录: /user/* 访问/user下的所有资源时,过滤器都会被执行
3. 后缀名拦截: *.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行
4. 拦截所有资源:/* 访问所有资源时,过滤器都会被执行
* 拦截方式配置:资源被访问的方式
* 注解配置:
* 设置dispatcherTypes属性
1. REQUEST:默认值。浏览器直接请求资源
2. FORWARD:转发访问资源
3. INCLUDE:包含访问资源
4. ERROR:错误跳转资源
5. ASYNC:异步访问资源
* web.xml配置
* 设置<dispatcher></dispatcher>标签即可
5.过滤器链
* 执行顺序:如果有两个过滤器:过滤器1和过滤器2
1. 过滤器1
2. 过滤器2
3. 资源执行
4. 过滤器2
5. 过滤器1
* 过滤器先后顺序问题:
1. 注解配置:按照类名的字符串比较规则比较,值小的先执行
* 如: AFilter 和 BFilter,AFilter就先执行了。
2. web.xml配置: <filter-mapping>谁定义在上边,谁先执行
三、Listener
* 概念:web的三大组件之一。
* 事件监听机制
* 事件 :一件事情
* 事件源 :事件发生的地方
* 监听器 :一个对象
* 注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码
* ServletContextListener:监听ServletContext对象的创建和销毁
* 方法:
* void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
* void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法
* 步骤:
1. 定义一个类,实现ServletContextListener接口
2. 复写方法
3. 配置
1. web.xml
<listener>
<listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
* 指定初始化参数<context-param>
2. 注解:
* @WebListener
版权声明
本文为[yueseck]所创,转载请带上原文链接,感谢
https://blog.csdn.net/yueseck/article/details/124327845
边栏推荐
- 得到知识服务app原型设计比较与实践
- Notes on concurrent programming of vegetables (IX) asynchronous IO to realize concurrent crawler acceleration
- Gets the current time in character format
- SWAT—Samba WEB管理工具介绍
- Charles 功能介绍和使用教程
- 图像处理——噪声小记
- Restful、SOAP、RPC、SOA、微服务之间的区别
- Solution architect's small bag - 5 types of architecture diagrams
- ID number verification system based on visual structure - Raspberry implementation
- How to bind a process to a specified CPU
猜你喜欢

景联文科技—专业数据标注公司和智能数据标注平台

Visual common drawing (I) stacking diagram

Reading integrity monitoring techniques for vision navigation systems - 5 Results

【leetcode】107. Sequence traversal of binary tree II

Solution architect's small bag - 5 types of architecture diagrams

比深度学习更值得信赖的模型ART

Yarn resource scheduler

使用 PHP PDO ODBC 示例的 Microsoft Access 数据库

UEditor之——图片上传组件大小4M的限制

MySQL how to merge the same data in the same table
随机推荐
707. Design linked list (linked list)
SSH利用私钥无密钥连接服务器踩坑实录
SQL server query database deadlock
STM32接电机驱动,杜邦线供电,然后反烧问题
Introduction to data analysis 𞓜 kaggle Titanic mission (III) - > explore data analysis
/Can etc / shadow be cracked?
SSH uses private key to connect to server without key
Special members and magic methods
Yarn resource scheduler
Charles function introduction and use tutorial
Jinglianwen technology - professional data annotation company and intelligent data annotation platform
【leetcode】199. Right view of binary tree
[Niuke challenge 47] C. conditions (BitSet acceleration Floyd)
Code implementation of general bubbling, selection, insertion, hill and quick sorting
How to bind a process to a specified CPU
景联文科技—专业数据标注公司和智能数据标注平台
Visual common drawing (III) area map
Cve-2019-0708 vulnerability exploitation of secondary vocational network security 2022 national competition
Notes on concurrent programming of vegetables (IX) asynchronous IO to realize concurrent crawler acceleration
比深度学习更值得信赖的模型ART