Themleaf模板文件位置配置的几种方式
##一、模板文件在项目内
如果HTML文件在项目内
spring:
thymeleaf:
cache: false
encoding: utf-8
prefix: classpath:/templates/
suffix: .html
mode: HTML
SpringBoot默认是加载resources文件下面的templates里面的
@Controller
public class ThymeleafController {
@RequestMapping("/")
public String getindex(Model model) {
return "index";
}
}
这里Controller里面把index返回出去
这里就可以成功访问到了
因为SpringBoot默认去resources/templates里面找文件,所以即使我们不在YML文件配置也是可以读取到index.html的
这里我们不做配置重启服务后也是可以正常访问到
如果你的HTML文件不在templates目录下需要修改
prefix: classpath:/templates/ 这个路径
二、模板文件不在项目内在本机上
如果你的HTML文件不在项目内在本地的时候也是可以配置的
如图我这里是没有文件的,我的文件在桌面
所以如果你的文件不在项目内也是可以的
server:
port: 6077
spring:
thymeleaf:
cache: false
encoding: utf-8
prefix: file:/E:/Users/xxx/Desktop/ #linux系统文件目录不一样注意
suffix: .html
mode: HTML
三、模板文件存放在阿里云上
如果你的HTML文件不在项目内已经上传到阿里云的时候也是可以配置的
这里使用@Bean注入之后无需yml配置
import com.aliyun.oss.OSSClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
@Configuration
public class ThymeleafConfig {
@Value("${file.oss.access-key}")
private String accessKeyId;
@Value("${file.oss.secret-key}")
private String accessKeySecret;
@Value("${file.bucketName}")
private String bucket;
@Value("${file.oss.endpoint}")
private String endPoint;
@Bean
public OSSClient ossClient() {
return new OSSClient(endPoint, accessKeyId, accessKeySecret);
}
// Thymeleaf配置
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("https://" + bucket+ ".oss-" + endPoint+ "/templates/"); // 设置模板文件的URL地址
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCacheable(false);
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}
Controller里面直接返回文件名就行(这里带不带.html都可以)
@Controller
public class ThymeleafController {
@RequestMapping("/")
public String getindex(Model model) {
//假如这是你的文件地址
String a = "https://{你的bucketName}.oss-{你的endPoint}/{你的文件名字}.html";
return "{你的文件名字}.html";
}
}
如果对你有用的话点个赞再走吧!!!