1,通过注解扫描完成Filter组件的注册
- 编写Filter类
package com.lxp.filter;
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;
@WebFilter(filterName = "FristFilter", urlPatterns = "/frist")
public class FristFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
System.out.println("进入FristFilter.......");
arg2.doFilter(arg0, arg1);
System.out.println("离开FristFilter.......");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
- 编写启动类
package com.lxp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import com.lxp.filter.SecondFilter;
import com.lxp.servlet.SecondServlet;
@SpringBootApplication
@ServletComponentScan // 方法一:在springBoot启动时会扫描@WebFilter,并将该类实例化
public class AppStart {
public static void main(String[] args) {
SpringApplication.run(AppStart.class, args);
}
}
2,通过方法完成Filter组件的注册
- 编写Filter类
package com.lxp.filter;
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;
public class SecondFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
System.out.println("进入SecondFilter.......");
arg2.doFilter(arg0, arg1);
System.out.println("离开SecondFilter.......");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
- 编写启动类
package com.lxp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import com.lxp.filter.SecondFilter;
import com.lxp.servlet.SecondServlet;
@SpringBootApplication
public class AppStart {
public static void main(String[] args) {
SpringApplication.run(AppStart.class, args);
}
// 方法二:通过方法完成Servlet组件的注册
@Bean
public ServletRegistrationBean getServletRegistrationBean() {
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
// 方法二:通过方法完成Filter组件的注册
@Bean
public FilterRegistrationBean getFilterRegistrationBean() {
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
bean.addUrlPatterns("/second");
return bean;
}
}