过滤器 适合请求内容和视图内容处理,例如多部分表单和GZIP压缩
拦截器 适合处理公共处理程序代码和授权检查
首先,创建支持它的@Component类,并且应实现 HandlerInterceptor 接口。
拦截器常用的方法:
preHandle():请求发送到控制器之前执行操作postHandle():将响应发送到客户端之前执行操作afterCompletion():完成请求和响应后执行操作 @Component public class InterceptorConfig implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("执行preHandle方法"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("执行postHandle方法"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("执行afterCompletion方法"); } }使用 WebMvcConfigurerAdapter 向 InterceptorRegistry 注册此拦截器
@Component public class WebConfig extends WebMvcConfigurationSupport { @Override public void addInterceptors(InterceptorRegistry registry) { // 注册自定义拦截器,添加拦截路径和排除拦截路径 registry.addInterceptor(new InterceptorConfig()) // 添加拦截器 .addPathPatterns("/**"); // 添加拦截路径 // .excludePathPatterns(// 添加排除拦截路径 // "/**").order(0);//执行顺序 super.addInterceptors(registry); } }但此时 Controller 层并不能返回 页面
不过可以直接访问静态文件
比如:localhost:8080/static/china.png
在 pom.xml 中添加:
<!-- 模板 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>Controller 层:
@Controller public class ViewController { @RequestMapping("/getHome") public String getHome(){ return "home"; } }HTML 页面:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="color:red">hello world</div> </body> </html>访问:localhost:8080/getHome
如果有缺陷,请注明,谢谢。