一、普通过滤器
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文件中配置如下