Java体系知识之过滤器Filter

Java体系知识之过滤器Filter

1 技术简介

(1)过滤器:
	净水器
	空气净化器
	...
(2)JavaWeb组件:
	Servlet
	Filter
	Listener
(3)作用:
	适合做一些通用的操作
	
	A.普通意义的公共代码:
		跨域请求处理;
		字符编码;
	B.逻辑方面的公共代码:
    	登录访问控制:根据是否登录判断
    		若已登录过,可允许继续访问;
    		若未登录,不允许继续访问;
		权限访问控制:根据是否拥有权限判断
			若已拥有权限,可允许访问;
			若不拥有权限,不允许访问;

2 过滤器使用步骤(重点)

2.1 使用步骤

(1)创建一个类,实现Filter接口
(2)重写方法
(3)配置过滤器:
	web.xml;
	注解;

2.2 案例

package com.javasm.filter.basic;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @author: ShangMa
 * @className: MyFilterDemo01
 * @description: 过滤器使用步骤
 * @date: 2022/8/31 11:22
 */
@WebFilter("/demo01")
public class MyFilterDemo01 implements Filter {
   
    /**
     * 过滤器使用步骤:
     * (1)创建一个类,实现Filter接口
     * (2)重写方法
     * (3)配置过滤器:
     * 	web.xml;
     * 	注解;
     *
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
   
    }

    @Override
    public void destroy() {
   
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   
        System.out.println("执行MyFilterDemo01.doFilter()");

    }
}

3 过滤器执行过程(重点)

3.1 内容概述

(1)当请求过来时,先进入过滤器执行
(2)若过滤器有放行代码,再找对应的Servlet执行
(3)最后执行放行代码下面的语句

3.2 案例

package com.javasm.filter.basic;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @author: ShangMa
 * @className: MyFilterDemo02
 * @description: 过滤器执行过程
 * @date: 2022/8/31 11:22
 */
@WebFilter("/demo02")
public class MyFilterDemo02 implements Filter {
   
    /**
     * 过滤器执行过程:
     *  当请求过来时,先进入过滤器执行;
     *  若过滤器有放行代码,再找对应的Servlet执行;
     *  最后执行放行代码下面的语句;
     */

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
   
    }

    @Override
    public void destroy() {
   
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   
        System.out.println("执行MyFilterDemo02.doFilter()");
        // 放行代码
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("执行MyFilterDemo02过滤器放行代码下面的语句");
    }
}

4 过滤器生命周期

4.1 内容概述

(1)服务器启动时,创建Filter实例,触发init方法执行
(2)当有请求访问时,执行doFilter方法
(3)服务器正常关闭时,销毁Filter实例,触发destroy方法执行

4.2 案例

package com.javasm.filter.basic;

import javax.servlet.*;
import javax.servlet.annotation
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring框架中的拦截器和过滤器都是用于对请求进行拦截和处理的,但是它们的具体实现方式和作用范围有所不同。下面是Spring拦截器和过滤器知识体系: 1. 过滤器过滤器Servlet规范中的一部分,可以对请求进行过滤和处理,例如对请求参数进行过滤、对响应进行处理等。过滤器Servlet容器中执行,可以对所有的请求进行过滤,包括静态资源和动态资源等。 2. 拦截器:拦截器是Spring框架中的一种机制,可以对控制器中的请求进行拦截和处理,例如对登录状态进行判断、对请求参数进行处理等。拦截器在Spring容器中执行,只能对控制器中的请求进行拦截,不能对静态资源进行拦截。 3. 实现方式:过滤器是基于Java Servlet规范实现的,可以通过实现javax.servlet.Filter接口来实现;拦截器是基于Spring框架实现的,可以通过实现org.springframework.web.servlet.HandlerInterceptor接口来实现。 4. 作用范围:过滤器的作用范围比拦截器广,可以对所有的请求进行过滤处理,包括静态资源和动态资源;而拦截器只能对控制器中的请求进行拦截处理。 5. 执行顺序:过滤器的执行顺序是由部署描述符中的过滤器声明顺序决定的,而拦截器的执行顺序可以通过实现org.springframework.core.Ordered接口或者使用@Order注解来指定。 6. 应用场景:过滤器可以用于请求参数的校验、字符编码的处理、请求的安全性保障等;而拦截器可以用于登录状态的验证、请求的日志记录、性能监控等。 以上是Spring拦截器和过滤器知识体系,它们都是Web开发中非常重要的组件,可以提高系统的可维护性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值