Java过滤器能够对目标资源的请求和响应进行截取,SpringBoot环境中定义过滤器按照如下步骤:
一、定义过滤器
Order注解是定义过滤器的执行顺序,值越小优先执行。
package com.test.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import org.springframework.core.annotation.Order;
@Order(1)
@WebFilter(filterName = "myFilter", urlPatterns = "/*")
public class MyFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain)
throws IOException, ServletException {
System.out.println("MyFilter...");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
二、SpringBoot启动类上添加ServletComponentScan注解
package com.test;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
@SpringBootApplication
//@ServletComponentScan("com.test.util")
@EnableDubboConfiguration
//@ComponentScan("com.test.ctrl,com.test.util")
@ServletComponentScan
public class Starter extends SpringBootServletInitializer
{
public static void main( String[] args )
{
SpringApplication.run(Starter.class,args);
}
}