首页 > 其他分享 >过滤器、监听器和拦截器

过滤器、监听器和拦截器

时间:2024-12-25 14:54:45浏览次数:3  
标签:拦截器 request 监听器 过滤器 servlet javax

1.过滤器、监听器和拦截器

过滤器:在servlet中,过滤器也就是 Filter ,它主要用于过滤字符编码,做一些统一的业务等等。是使用 javax.servlet.Filter 接口进行实现的。
在代码安全中,他常被用于防止XSS,防SQL注入,防任意文件上传等。在配置了Filter之后,它可以统一过滤危险字符,省时省力。

监听器:在servlet中,监听器也就是 Listener ,它主要用于做一些初始化的内容。是使用 javax.servlet.ServletContextListener 接口进行实现的。
如果同时有监听器和过滤器,监听器是在过滤器之前启动。

拦截器:依赖WEB框架,在SrpingMvc中就依赖SpringMVC框架。是属于面向切面变成的一种运用。
过滤器和拦截器的区别,分为以下五种:
拦截器是基于Java的反射机制的,而过滤器是基于函数回调
过滤器依赖与servlet容器,而拦截器不依赖与servlet容器
拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
拦截器可以访问action上下文、值栈里的对象,而过滤器不能
在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

2.过滤器代码(Filter)

package com.test.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class FilterTest implements Filter {

    @Override
    public void destroy(){
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        String requestURI = request.getRequestURI();

        if(requestURI.contains("r")){
            chain.doFilter(request, response);
        }else{
            request.getRequestDispatcher("/").forward(request, response);
    }
}
@Override
public void init(FilterConfig config) throws ServletException{
    }
}

3.在web.xml中配置注册过滤器

我们重写了 doFilter() 方法,代码逻辑如下:
首先通过 String requestURI = request.getRequestURI(); 获取URL路径。然后对路径进行判断, 如果路径中包含 /FirstServlet ,则放行。
否则就跳转到根路径下

过滤器标签需要要在servlet标签上面,程序会按照注册顺序进行执行。
如果涉及多个过滤器,也是按照注册顺序进行执行的。
注册过滤器有两种方式:一是上面通过 web.xml 进行注册,另一种是通过 @WebFilter() 注解的方式进行注册。

  <!--配置过滤器-->
  <filter>
    <filter-name>FilterTest</filter-name>
    <filter-class>com.test.filter.FilterTest</filter-class>
  </filter>
  <!--映射过滤器-->
  <filter-mapping>
  <filter-name>FilterTest</filter-name>
  <!--“/*”表示拦截所有的请求 -->
  <url-pattern>/*</url-pattern>
  </filter-mapping>

4.运行项目,访问不通路径,观察不同效果


标签:拦截器,request,监听器,过滤器,servlet,javax
From: https://www.cnblogs.com/lx-limit/p/18630358

相关文章

  • 拦截器
    请求到达controller前经过的拦截。如何定义拦截器1.创建一个类并实现HandlerInterceptor接口publicclassMyInterceptorimplementsHandlerInterceptor{//prefixpublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objectha......
  • 数据监听器
    数据监听器数据监听器可以用于监听和响应任何属性和数据字段的变化。从小程序基础库版本2.6.1开始支持。使用数据监听器有时,在一些数据字段被setData设置时,需要执行一些操作。例如,this.data.sum永远是this.data.numberA与this.data.numberB的和。此时,可以使用数据监......
  • 拦截器(Interceptor)与过滤器(Filter)的联系和区别
    拦截器(Interceptor)与过滤器(Filter)的联系和区别在Spring和JavaWeb开发中,拦截器(Interceptor)和过滤器(Filter)都是用于在请求到达目标资源(如控制器、Servlet)之前或之后执行某些逻辑的机制。它们的主要作用是处理跨切面的逻辑,比如日志记录、权限验证、性能监控等。虽然它们......
  • MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
     1.1创建ThreadLocal工具类(作为业务逻辑结果存放类)packageorg.springblade.sample.utils;publicclassQueryContext{ privatestaticfinalThreadLocal<Long>totalInThreadLocal=newThreadLocal<>(); publicstaticvoidsetTotalIn(longtotalIn){ totalInT......
  • 过滤器Filter vs 拦截器Interceptor
    过滤器FilterJavaWeb三大组件之一,可以把对资源的请求拦截下来,实现一些特殊功能,比如登录校验、统一编码处理、敏感字符处理等拦截器Interceptor概念:一种动态拦截方法调用的机制,类似于Filter,Spring框架提供,用于动态拦截控制器方法的执行作用:拦截请求,在指定的方法调用的前后,根......
  • 过滤器
    什么是过滤器?Javaweb过滤器是一种用于在Servlet处理请求之前或之后对请求进行预处理或后处理的组件。过滤器可以用于拦截请求、修改请求参数、过滤响应内容等操作。为什么使用过滤器我们之前编写代码,有些资源需要登录后才允许访问。之前我们是在响应的资源处判断。需要在很......
  • 拦截烂SQL,解读GaussDB(DWS)查询过滤器过滤规则原理
    本文分享自华为云社区《GaussDB(DWS)查询过滤器过滤规则原理与使用介绍》,作者:清道夫。1.前言适用版本:【9.1.0.100(及以上)】查询过滤器在9.1.0.100之前就具备提供查询过滤功能的能力,但仅支持自动隔离反复查询被终止的查询,防止烂SQL再次执行。老版本主要面向异常熔断机制和紧急......
  • kafkaui自定义过滤器
    importgroovy.json.JsonSlurper//假设这些变量已经在Groovy上下文中可用//partition,timestampMs,keyAsText,valueAsText,header,key,value//配置要过滤的目标名称deftargetDid=""//JSON解析defjsonSlurper=newJsonSlurper()//假设valueAsText......
  • vue-axios响应请求拦截器
    importaxiosfrom"axios";//import{ElMessage}from'element-plus'import{BASE_URL,TIMEOUT}from"../config";constAxios=axios.create({ //后端url地址baseURL:BASE_URL,//设置超时时间timeout:TIMEOUT,//请求头类型/......
  • Day33:安全开发-JavaEE应用&SQL预编译&Filter过滤器&Listener监听器&访问控制
    一,JavaEE-过滤器Filter1,过滤器的含义:Filter被称为过滤器,过滤器实际上就是对Web资源进行拦截,做一些处理后再交给下一个过滤器或Servlet处理,通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理。开发人员利用filter技术,可以实现对所有Web资源的管理,例如实现......