)
目录1. 入门1.1 编写实体类1.2 编写过滤器1.3 编写Controller1.4 在启动类上开启servlet组件扫描ServletComponentScan1.5 测试并观察控制台打印情况2. 进阶2.1 过滤器简单介绍2.2 编写过滤器类2.3?编写过滤器配置类2.4?Controller和实体类和之前一样启动类的servlet组件扫描可去除2.5?启动程序并观察控制台* *##### 1. 入门###### 1.1 编写实体类 Component Data AllArgsConstructor NoArgsConstructor public class Message { private Date date; private String msg ; private String title; }###### 1.2 编写过滤器 WebFilter(urlPatterns /message/“,filterName “filter1”) public class MessageFilter1 extends HttpFilter { Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if(”/message/echo.equals(request.getRequestURI())) { String title request.getParameter(“title”); System.out.println(“【filter1】拦截到的请求的title参数内容为:”title); } // 将请求传递给链中的下一个过滤器或目标Servlet chain.doFilter(request,response); } }###### 1.3 编写Controller RestController RequestMapping(“/message”) public class MessageController { Resource private Message message ; RequestMapping(“/echo”) public Message echo(String msg,String title) { message.setTitle(title); message.setMsg(msg); return message; } }###### 1.4 在启动类上开启servlet组件扫描ServletComponentScan SpringBootApplication ServletComponentScan //开启servlet组件扫描 public class MicrobootWebApplication { public static void main(String[] args) { SpringApplication.run(MicrobootWebApplication.class, args); } }###### 1.5 测试并观察控制台打印情况 http://localhost:8083/message/echo?msg西红柿战争title两败俱伤拦截成功##### 2. 进阶###### 2.1 过滤器简单介绍过滤器Filter是Java Web应用中一种用于处理请求request和响应response的组件过滤器和拦截器的执行顺序* 过滤器预处理* 过滤器后处理* 拦截器前处理* 控制器方法Controller)* 拦截器后处理* 过滤器后处理###### 2.2 编写过滤器类 //过滤器1,因为有了配置类不再需要添加WebFilter注解 public class MessageFilter1 extends HttpFilter { Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if(“/message/echo”.equals(request.getRequestURI())) { String title request.getParameter(“title”); System.out.println(“【filter1】拦截到的请求的title参数内容为:”title); } chain.doFilter(request,response); } } public class MessageFilter2 extends HttpFilter { Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if(“/message/echo”.equals(request.getRequestURI())) { String msg request.getParameter(“msg”); System.out.println(“【filter2】拦截到的请求的title参数内容为:”msg); } chain.doFilter(request,response); } }###### 2.3编写过滤器配置类 //过滤器配置类 Configuration public class WebFilterConfig { Bean public FilterRegistrationBean getFilter1Registration() { FilterRegistrationBean filterRegistrationBean new FilterRegistrationBean(); filterRegistrationBean.setFilter(this.getMessageFilter1()); //设置过滤器名称和路径在过滤器类写了的话这里不用重复写 filterRegistrationBean.setName(“filter”); filterRegistrationBean.addUrlPatterns(“/*”); //设置过滤器执行顺序数字越小越早进行过滤也可设置为负数 filterRegistrationBean.setOrder(1); return filterRegistrationBean; } Bean public FilterRegistrationBean getFilter2Registration() { FilterRegistrationBean filterRegistrationBean new FilterRegistrationBean(); filterRegistrationBean.setFilter(this.getMessageFilter2()); //设置过滤器执行顺序 filterRegistrationBean.setOrder(2); return filterRegistrationBean; } Bean public MessageFilter1 getMessageFilter1() { return new MessageFilter1(); } Bean public MessageFilter2 getMessageFilter2() { return new MessageFilter2(); } }###### 2.4Controller和实体类和之前一样启动类的servlet组件扫描可去除 //ServletComponentScan //开启servlet组件扫描 public class MicrobootWebApplication { public static void main(String[] args) { SpringApplication.run(MicrobootWebApplication.class, args); } }###### 2.5启动程序并观察控制台 http://localhost:8083/message/echo?msg西红柿战争title两败俱伤filter1比filter2先启用执行成功。