监听器和过滤器

简介: 监听器和过滤器

1.什么是过滤器
过滤器用于拦截传入的请求和传出的响应

监视、修改或以某种方式处理正在客户端和服务器之间交换的数据流
image.png
2.过滤器的工作过程
image.png
3.过滤器的常见用途
一般用于完成通用的操作,如:登录验证、同意编码处理、敏感字符过滤、、、、
利用过滤器特殊的执行时机,可以实现 Web 应用程序中的预处理和后期处理逻辑

日志记录
改善性能
安全与会话管理
敏感字过滤
……
(1)过滤器的快速入门
步骤:
a:定义一个类,实现接口Filter
b:复写方法
c:配置拦截路径
1.web.xml
2.注解
(2)过滤器细节
1.web.xml配置
image.png
2.过滤器执行流程
执行过滤器
执行放行后的资源
回来执行过滤器放行代码下边的代码
3.过滤器生命周期方法
init:在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次。用于加载资源
doFilter:每一次请被拦截资源时,会执行,执行多次
destory:服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destory方法,只执行一次。
image.png
image.png
4.过滤器配置详解
(1)拦截路径配置
具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会被执行
目录拦截:/user/* 访问/user下的所有资源时,过滤器都会被执行
后缀名拦截:*.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行
拦截所有资源:/* 访问所有资源时,过滤器都会被执行
(2)拦截方式配置:资源被访问的方式
注解配置

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

web.xml配置
设置标签即可

5.过滤器链(配置多个过滤器)
执行顺序:如果有两个过滤器:过滤器1和过滤器2
过滤器1 --> 过滤器2 -->资源执行 --> 过滤器2 --> 过滤器1

过滤器先后顺序问题:
注解配置;按照类名的字符串比较规则比较,值小的先执行
如:AFilter 和 BFilter,AFliter就先执行了

image.png

web.xml配置:谁定义在上边,谁先执行
6.案例:
案例1:登录验证
需求:
1.访问day17_case案例的资源,验证其是否登录
2.如果登录了,则直接放行
3.如果没有登录,则跳转到登录页面,提示“你尚未登录,请先登录”;

image.png

image.png

image.png

image.png

案例2:敏感词汇过滤
需求:
1.对day17_case案例录入的数据进行敏感词汇过滤
2.敏感词汇参考《敏感词汇.txt》
3.如果是敏感词汇,替换为 *
分析:
1.对request对象进行增强

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

image.png

image.png

image.png

image.png

image.png

image.png

4.Filter接口
javax.servlet.Filter接口定义了过滤器需要实现的方法

方法名称功能描述void  init( FilterConfig  filterConfig)Web容器调用该方法实现过滤器的初始化void  doFilter(            ServletRequest  request,           ServletResponse  response,            FilterChain  chain )当客户端请求资源时,Web容器会调用与资源对应的过滤器的doFilter( )方法。在该方法中,可以对请求和响应进行处理,实现过滤器的功能void  destroy( )Web容器销毁过滤器时调用该方法,可用来释放过滤器所用的资源

5.FilterConfig接口
在过滤器初始化过程中获取配置信息

方法名称功能描述String  getFilterName()返回部署描述符中定义的过滤器的名称Enumeration                 getInitParameterNames()返回  元素中定义的 init 参数的名称的字符串枚举String  getInitParameter (                                    String  name ) 获取web.xml中设置的以name命名的初始化参数值ServletContext  getServletContext()返回过滤器所属的Web上下文对象引用

6.过滤器的应用
利用过滤器的特性,对原本分散的中文乱码处理实现集中统一处理

image.png

相关文章
|
4月前
|
XML Java 数据格式
Filter&Listener(过滤器和监听器)
Java中的过滤器(Filter)和监听器(Listener)是两种不同的概念。过滤器(Filter)是在Java Web应用程序中,用来拦截和修改进入或离开web应用程序的请求和响应的对象。监听器(Listener)是一种用于监听和响应特定事件的Java对象。
36 3
Filter&Listener(过滤器和监听器)
|
7月前
|
前端开发 Java
JavaWeb17(过滤器&监听器)
JavaWeb17(过滤器&监听器)
|
5月前
|
前端开发 Java 程序员
Servlet/过滤器/拦截器/监听器:
Servlet接口在Sun公司有两个默认的实现类:HttpServlet、GenericServlet。Servlet是一种运行服务器端的Java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。
|
9月前
|
存储 Java 数据安全/隐私保护
servlet过滤器与监听器
前言 Servlet 过滤器和监听器是 Java Web 应用程序中常见的两种组件,它们提供了各种扩展 Web 应用程序功能的方式。 总的来说,过滤器和监听器都可以通过 Java Web 应用程序的配置文件或注解进行使用,方便灵活,并可以很好地实现框架与业务逻辑的分离,提高代码可维护性和扩展性。 过滤器(Filter) 1. 参数验证和转换:可以拦截用户提交的数据,并对数据格式进行验证、修正或转换。 2. 访问控制和认证:可以拦截请求并检查用户是否有访问特定资源的权限。 3. 日志记录:可以拦截请求并输出相应的日志信息,用于系统运行时的监测与故障排除。 4. 资源压缩和解密: 可以拦截响应并对
49 0
|
10月前
|
传感器 Java
javaweb(四)——过滤器与监听器(上)
javaweb(四)——过滤器与监听器
|
10月前
|
算法 Java
javaweb(四)——过滤器与监听器(中)
javaweb(四)——过滤器与监听器
|
10月前
|
XML JSON 前端开发
javaweb(四)——过滤器与监听器(下)
javaweb(四)——过滤器与监听器
|
编解码 前端开发 JavaScript
Filter过滤器,和Listener监听器
Filter过滤器,和Listener监听器
122 0
Filter过滤器,和Listener监听器
|
XML 设计模式 前端开发
Servlet、过滤器、监听器、拦截器
Servlet是javaEE规范中的一种,javaEE中的规范很多除了Servlet还有很多我们熟悉的JSP、JDBC、RMI、XML、EJB、JTS等等。
125 0
Servlet、过滤器、监听器、拦截器
|
Java 应用服务中间件 数据安全/隐私保护
【JavaWeb】过滤器和监听器,就这?
Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把资源的请求拦截下来,从而实现一些特殊的功能。过滤器一般完成一些通用的操作,比如权限控制、统一编码处理、敏感字符处理等等Filter流程图一个web路径,可以配置多个过滤器,这多个过滤器就被称为过滤器链。流程图如下:当web应用有一个A一个B过滤器组成的过滤器链时,A放行后,会来到B过滤器。只有两个过滤器都放行,才会访问到相应的资源。
【JavaWeb】过滤器和监听器,就这?