一、普通过滤器

Filter是Servlet规范中的过滤器,可以处理请求,对请求的参数、属性进行调整。常常在过滤器中处理字符编码。

1、创建自定义过滤器类

package com.cqjtu.vo;


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

// 自定义过滤器类
public class MyFilter implements Filter
{

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
    {
        System.out.println("执行了MyFilter");
        // 过滤器链,让请求能够传递下去
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

2、注册Filter过滤器对象

package com.cqjtu.controller;

import com.cqjtu.vo.MyFilter;
import com.cqjtu.vo.MyServlet;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration // Configuration注解标识的类中声明了1个或者多个@Bean方法,Spring容器可以使用这些方法来注入Bean
public class WebApplicationConfig
{
    @Bean
    public FilterRegistrationBean filterRegistrationBean()
    {
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new MyFilter());
        // 指定过滤的URL地址
        bean.addUrlPatterns("/user/*");
        return bean;
    }

}

3、添加Controller

package com.cqjtu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class CustomFilterController
{
    @RequestMapping("user/account")
    @ResponseBody
    public String userAccount()
    {
        return "user/account";
    }
    @RequestMapping("/query")
    @ResponseBody
    public String queryAccount()
    {
        return "/query";
    }
}

二、字符集过滤器

CharacterEncodingFilter:解决post请求中的乱码问题

在properties文件中配置如下

SpringBoot学习笔记--过滤器Filter_java