Spring Boot 拦截器配置及静态页面访问

    技术2022-07-10  130

    Spring Boot 拦截器配置及静态页面访问

    文章目录

    Spring Boot 拦截器配置及静态页面访问1:拦截器配置2:静态页面访问2.1:添加静态资源文件,外部可以直接访问地址2.2:Controller 返回页面

    1:拦截器配置

    过滤器 适合请求内容和视图内容处理,例如多部分表单和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); } }

    2:静态页面访问

    2.1:添加静态资源文件,外部可以直接访问地址

    @Component public class WebConfig extends WebMvcConfigurationSupport { /** * 添加静态资源文件,外部可以直接访问地址 */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } }

    但此时 Controller 层并不能返回 页面

    不过可以直接访问静态文件

    比如:localhost:8080/static/china.png

    2.2:Controller 返回页面

    在 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

    如果有缺陷,请注明,谢谢。

    Processed: 0.012, SQL: 9