SoFunction
Updated on 2025-03-03

What is the difference between JAVA filter and interceptor?

What is the difference between JAVA filter and interceptor?

Updated: October 28, 2024 10:23:45 Author: Need to resing
In JavaWeb development, filters (Filters) and interceptors (Interceptors) are two important components, mainly used to intercept and process requests. Filters belong to the JavaServlet specification and are used to process before requests reach the target resource or before responses return to the client. Friends who need them can refer to the following

Preface

In Java Web development, filters and interceptors are two commonly used components that are used to intercept and process requests at different stages of request processing. They have different uses and implementation mechanisms, and the difference is detailed below.

Filter

A filter is a component defined in the Java Servlet specification that pre-processes and post-processes requests and responses before a request reaches the target resource or before a response returns to the client. Filters are mainly used in the following scenarios:

  • Logging: Log information about requests and responses.
  • Certification and authorization: Check whether the user has permission to access a resource.
  • Enter verification: Verify the legality of the request parameters.
  • Compress and decompress: Compress and decompress requests and responses.
  • Character encoding: Set the character encoding of request and response.

Implementation mechanism

Filters are implemented byThe interface is defined, usually inConfigure in the file, or use annotation configuration. The workflow of the filter is as follows:

  • initialization: The filter is initialized when the web application starts.
  • Intercept requests: When the request arrives, the filter intercepts the request and callsdoFilterMethods to process.
  • Pass the request: Filters can choose to pass the request to the next filter or target resource.
  • Processing response: The filter can process the response before it returns to the client.
  • destroy: The filter is destroyed when the web application is closed.

Sample code

import ;
import ;
import ;
import ;
import ;
import ;
import ;

public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // Initialize the filter    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        // Code executed before request processing        ("Before request processing");

        // Pass the request to the next filter or target resource        (request, response);

        // Code executed before the response returns        ("After response processing");
    }

    @Override
    public void destroy() {
        // Destroy the filter    }
}

Interceptor

Interceptor is a component defined in the Spring framework for intercepting requests during Spring MVC processing requests. Interceptors are mainly used in the following scenarios:

  • Logging: Log information about requests and responses.
  • Certification and authorization: Check whether the user has permission to access a resource.
  • Enter verification: Verify the legality of the request parameters.
  • Performance monitoring: Monitor the time of request processing.

Implementation mechanism

Interceptor is implemented byInterface definition, usually configured in Spring configuration files, or using annotation configuration. The interceptor workflow is as follows:

  • Preprocessing: The interceptor will call before the request reaches the controllerpreHandleMethods are pre-processed.
  • Post-processing: After the controller handles the request, but before the view renders, the interceptor callspostHandleMethods are post-processed.
  • Complete processing: After the view is rendered, the interceptor will callafterCompletionThe method completes the processing.

Sample code

import ;
import ;

import ;
import ;

public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // Code executed before request processing        ("Before request processing");
        return true; // Return true means continue processing of the request, return false means interrupt request processing    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
        // Code executed after the controller handles the request, but before the view renders        ("After request processing, before view rendering");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
                                Exception ex) throws Exception {
        // Code executed after view rendering        ("After view rendering");
    }
}

Summary of the difference

  • Specifications and frameworks

    • Filter: belongs to the Java Servlet specification and is suitable for all Servlet-based web applications.
    • Interceptor: Belongs to the Spring Framework and is only suitable for Spring MVC applications.
  • Range of action

    • Filter: Acts on all requests and responses, including static resources.
    • Interceptor: Only for requests processed by Spring MVC, and do not include static resources.
  • Execution timing

    • Filter: Execute before the request reaches the target resource and before the response returns to the client.
    • Interceptor: Execute before, after, and after view rendering.
  • Configuration method

    • Filter: Usually inConfigure in the file, or use annotation configuration.
    • Interceptor: Usually configured in Spring configuration files, or using annotation configuration.

Summarize

Filters and interceptors are components used to intercept and process requests, but they have different uses and implementation mechanisms. Filters belong to the Java Servlet specification and are suitable for all Servlet-based web applications; interceptors belong to the Spring framework and are only suitable for Spring MVC applications. Selecting the appropriate components according to specific needs can better implement pre-processing and post-processing of requests.

This is all about this article about the difference between JAVA filter and interceptor. For more information about the differences between JAVA filter and interceptor, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!

  • java
  • Filter
  • Interceptor

Related Articles

  • SpringBoot integrated local cache performance king Caffeine example detailed explanation

    This article mainly introduces a detailed explanation of the examples of Caffeine, the king of SpringBoot integrated local cache performance. Friends in need can refer to it for reference. I hope it can be helpful. I wish you more progress and an early promotion and salary increase
    2022-07-07
  • Java implements simple word segmentation function

    The search function is an important feature and function of a system with database functions. Common search functions in life basically have word segmentation search function. However, although the ES function is powerful, it is too labor-intensive for students or small projects. If you write a word segmentation tool, it will add icing on the cake to the project, making it not just a system that can only search for keywords. Friends who need it can refer to it.
    2021-06-06
  • Mybatis-plus id primary key generation pit

    This article mainly introduces the pitfalls generated by the mybatis-plus id primary key. The example code is introduced in this article in detail, which has certain reference learning value for everyone's study or work. Friends who need it, please learn with the editor below.
    2020-08-08
  • IntelliJ IDEA must have plug-ins and configurations

    This article mainly introduces the plug-ins and configurations in IntelliJ IDEA. This article introduces you very detailedly through pictures and texts, which has certain reference value for your study or work. Friends who need it can refer to it.
    2020-05-05
  • The getSingleton method of life cycle of bean in Spring

    Today I bring you relevant knowledge about Spring. The article revolves around the getSingleton method of the life cycle of beans in Spring. There are very detailed introductions and code examples in the article. Friends who need it can refer to it.
    2021-06-06
  • Springboot integrates vue2-uploader to implement file fragment upload, second transmission, and breakpoint continuous transmission functions

    For processing large files, whether it is the user or the server, it is not advisable to read, send and receive them at one time, which can easily lead to memory problems. The following article mainly introduces relevant information about springboot integrating vue2-uploader to implement file fragmented upload, instant transmission, and breakpoint continuous transmission functions. Friends who need it can refer to it
    2023-06-06
  • Implementation method of data transmission in front and back ends of Spring MVC

    This article mainly introduces the implementation method of data transmission in front and back ends of Spring MVC. Friends who need it can refer to it
    2017-10-10
  • The problem of the same variable name in Mybatis #foreach causing value overwriting

    This article mainly introduces the problem of the same variable name in Mybatis #foreach that leads to value overlay, which has certain reference value. Interested friends can refer to it.
    2021-07-07
  • Java ClassLoader virtual class implements hot code replacement example code

    This article mainly introduces the example code for Java ClassLoader virtual class to implement hot code replacement. The example code is introduced in this article in detail, which has certain reference learning value for everyone's learning or work. Friends who need it, please learn with the editor below.
    2022-06-06
  • How to solve getReader() has already been called&

    This article mainly introduces how to solve the problem of getReader() has already been called for this request. It has good reference value. I hope it will be helpful to everyone. If there are any errors or no complete considerations, I hope I will give you some advice.
    2024-05-05

Latest Comments