springboot2 引用静态资源文件和设置拦截器以及装饰图标
1. 结构
1.1 导包
引入 thymeleaf 适应版本
<properties>
<java.version>1.8</java.version>
<!-- thymeleaf3 版本 对应 layout2 版本 -->
<thymeleaf.version>3.0.11.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.4.1</thymeleaf-layout-dialect.version>
</properties>
<!-- 引入 thymeleaf 的依赖包. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
静态资源的一种引用方法
<!-- webjars 中 jQuery 包 -->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
1.2 配置资源
1.21 application.properties 配置
# spring static files
spring.resources.static-locations=classpath:/static/, classpath:/public/
# spring thymeleaf
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false
1.22 WebStaticConfig 配置
package com.ykenan.ykenan.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* Configuring static resource mapping
*/
@Configuration
public class WebStaticConfig implements WebMvcConfigurer {
private static final Logger logger = LoggerFactory.getLogger(WebStaticConfig.class);
/**
* Adding static resource and public page files, the address can be accessed directly from outside
* @param registry registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
logger.info("Adding static resources and public page files.");
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
1.23 配置主页访问和拦截器
springboot2 拦截了 静态资源
package com.ykenan.ykenan.config;
import com.ykenan.ykenan.interceptor.AdministratorInterceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
public class WebMvcConfigurerConfig implements WebMvcConfigurer {
private final Logger logger = LoggerFactory.getLogger(WebMvcConfigurerConfig.class);
/**
* Accessing any of these paths goes to the specified page
*
* @param registry registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
logger.info("Enter the specified page.");
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html").setViewName("login");
}
/**
* Registered Interceptor
*
* @param registry registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
/* Exclude intercepting static resources */
registry.addInterceptor(new AdministratorInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/", "/index.html", "/administrator", "/verifyCode", "/success")
.excludePathPatterns("/public/**", "/static/**", "/css/**", "/data/**", "/font-awesome/**", "/img/**", "/js/**", "/favicon.ico");
}
}
1.24 将配置放入到容器中
package com.ykenan.ykenan.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* Configuration: set Configuration
*/
@Configuration
public class ViewControllerConfig implements WebMvcConfigurer {
private static final Logger logger = LoggerFactory.getLogger(ViewControllerConfig.class);
/**
* Register components into containers
* @return new WebMvcConfigurerConfig()
*/
@Bean
public WebMvcConfigurer webMvcConfigurer() {
logger.info("WebMvcConfigurer success");
return new WebMvcConfigurerConfig();
}
/**
* Register components into containers
* @return new LanguageLocaleResolverConfig()
*/
@Bean
public LocaleResolver localeResolver() {
logger.info("LocaleResolver success");
return new LanguageLocaleResolverConfig();
}
}
1.3 装饰图标
favicon.ico
照片名放在指定路径下, 例如: public, static 等等.
2. 浏览器
如果没有显示, 查看控制台.
运行下面的代码填写相应的路径即可.
<link rel="shortcut icon" th:href="@{/public/favicon.ico}">