说明
在SpringBoot中,过滤器的配置可以简单的使用@WebFilter来达到我们需要的结果,对于拦截器和异常处理程序,我们也可以实现SpringBoot提供给我们的一些接口,再配置进去,即可达到效果
快速开始
版本说明:springboot-2.0.4.RELEASE
编写一个启动类
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
/**
* Hello world!
*/
@SpringBootApplication
// 使能扫描到过滤器
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
编写一个Controller用于测试:
import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PersonController {
private static Logger logger = Logger.getLogger(PersonController.class);
@RequestMapping(value = "/getAll",method = RequestMethod.GET)
public String getAll(){
System.out.println("查询结束");
return "index";
}
@RequestMapping(value = "/exception",method = RequestMethod.GET)
public void throwSomeRuntimeException(){
System.out.println("抛出一个RuntimeException...");
throw new RuntimeException("sometest");
}
}
简单的字符过滤器:
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// 配置过滤器的顺序,从小到大排序
//@Order(2)
@WebFilter(filterName = "characterfilter", urlPatterns = "/*")
public class CharacterFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("No.2 Character filter initialized successfully");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
// htt