JavaWEB【Filter&Listener】

本文详细介绍了JavaWeb中的Filter过滤器和Listener监听器。过滤器主要用于拦截请求和响应,实现如字符编码统一、权限控制等功能,通过实现Filter接口并在web.xml配置。监听器则用于监听域对象的生命周期和数据变化,例如统计在线人数。文章涵盖了过滤器的概念、作用、实现步骤及生命周期,以及监听器的介绍和应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如需温习上一节代码,请点击下方链接进行跳转。

Javaweb之servlet_云彩123的博客-优快云博客如需温习上一节内容,请点击下方链接进行查看:javaweb之E家园项目_云彩123的博客-优快云博客如需温习上一节内容,请点击下方链接进行页面跳转:Javaweb之域对象&EL表达式&JSTL库_云彩123的博客-优快云博客目录今日核心:jsp与java分离1.域对象2.EL表达式3.JSTL库今日核心:jsp与java分离1.域对象 page域(pageContext):只能作用于当前页面,既不能用来做做转发的数据分享,也不能做重定向的数据分享。 request域:只能作用于同一个https://blog.youkuaiyun.com/m0_64522859/article/details/124395700

目录

过滤器和监听器

一、Filter过滤器

1.1 过滤器概念

1.2 过滤器的作用

1.3过滤器的实现步骤

1.3.1 实现javax.servlet.Filter接口

1.3.2 实现接口中的抽象方法

1.3.3 在web.xml配置过滤器

1.3.4 Filter生命周期

1.3.5 FilterConfig配置对象

1.4 过滤器在WEB应用中实例

1.4.1 字符编码过滤器

二、Listener监听器

   2.1 介绍

   2.2 案例:统计在线人数Demo

注册监听器


过滤器和监听器

一、Filter过滤器

1.1 过滤器概念

过滤器:就是在源数据和目的数据之间起过滤作用的组件

过滤器是JavaWeb三大组件之一(servlet、Listener、Filter),它与Servlet很相似,但是过滤器是用来拦截请求的,而不是处理请求的。

    在Web应用中,过滤器是驻留在服务器端的web组件,可以截取客户端和资源之间的请求与响应信息,且对这些信息进行过滤。WEB开发人员通过Filter技术,对web服务器管理的所有web资源(JSP,Servlet,静态图片文件或静态html文件等)进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制。过滤敏感词汇、压缩响应信息等一些高级功能。

    当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter"放行",那么会继承执行用户请求的Servlet;如果Filter不"放行",那么久不会执行用户请求的Servlet。可以理解为,Filter来决定是否调用Servlet。当执行完成Servlet的代码后,还会执行Filter后面的代码。

1.2 过滤器的作用

统一编码,统一用户认证,屏蔽非法文字,进行响应数据压缩

1.对用户进行统一认证,对用户的请求进行记录和审核
    用户认证就是判断一个用户是否为合法用户的过程。
    目前用户认证大都是基于Cookie、Session实现的。注册、登录几乎是所有web站点都具备的两个功能。以商城系统为例,用户输入登录名、密码进行注册、登录,这样系统内就可以为用户保存如:购物车、订单、商品喜好等个性化信息。用户认证使用户授权的基础。以商城系统为例,商家需要先进行用户认证,系统才能判断它是否有某个店铺的管理权。API调用和网页浏览一样,也需要用户认证。

2.对用户传输的数据过滤和替换,转换图像格式,对响应内容进行压缩,减少网络传输。
    每个请求和响应对象都需要设置字符编码,可以通过过滤器来对所有请求和响应对象进行过滤,进行字符集设置。   
3.对请求和响应进行加密和解密

1.3过滤器的实现步骤

  • 声明过滤器类并让其实现Filter接口;重写指定方法

  • 在web.xml配置过滤器

    Servlet API提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则吧这个Java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。
    
    Filter接口中有一个doFilter方法,当我们编写好Filter,并配置对哪个web资源进行拦截后,web服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,在该方法内编写代码可达到如下目的:
    (1)调用目标资源之前,让一段代码执行。
    (2)是否调用目标资源(即是否让用户访问web资源)
    (3)调用目标资源之后,让一段代码执行。
    
    web服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChiain对象是filter接口中最重要的一个对象,它也提供了doFilter方法,开发人员可以根据需求决定是否调用此方法,调用该方法,则web服务器就会调用web资源的service方法,即web资源就会被访问,否则web资源不会被访问。

1.3.1 实现javax.servlet.Filter接口

public class FilterDemo1 implements Filter{}

1.3.2 实现接口中的抽象方法

/**
  * 过滤器对象被销毁之前执行的方法 
  * 	服务器关闭或重载时,过滤器对象销毁
  */
public void destroy() {
	System.out.println("----过滤器被销毁----");
}
/**
  * 对请求进行过滤的方法 
  * 	ServletRequest 请求对象 
  * 	ServletResponse 响应对象 
  * 	FilterChain 过滤链对象
  * 		作用:将通过此过滤器的请求,传递给下一个过滤器或目标Servlet
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
	System.out.println("----过滤器执行过滤方法----");
	System.out.println("----DemoFilter-doFilter执行之前----");
	// 对请求放行的方法
	chain.doFilter(request, response);
	System.out.println("----DemoFilter-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值