Spring boot + thymeleaf 访问 jar 包内的 html 静态资源
文章目录
基础依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
配置类
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.templatemode.TemplateMode;
import java.nio.charset.StandardCharsets;
/**
* @author
* @date 2024/1/24 14:04
*/
@Configuration
public class TTUiConfig {// implements WebMvcConfigurer {
private final ApplicationContext applicationContext;
public TTUiConfig(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Bean
public SpringResourceTemplateResolver ttTemplateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(this.applicationContext);
resolver.setPrefix("classpath:/t-ui/");
resolver.setSuffix(".html");
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
resolver.setCacheable(true);
resolver.setOrder(10);
resolver.setCheckExistence(true);
return resolver;
}
}
自定义 jar 包内静态资源路径(在resources位置自定义存放资源的路径)
如下图:

这个打成jar包后如何访问到这个路径下的html
注意:SpringResourceTemplateResolver方法:setPrefix,setSuffix
setPrefix:设置静态资源路径:classpath:/t-ui/
setSuffix:设置静态资源后缀:.html
Controller 层
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @author
* @date 2024/1/23 15:25
*/
@Controller
public class TTController {
@GetMapping("t/index")
public String index(){
return "T-index";
}
}
访问路径:http:ip:port[/项目名]/t/index
就会跳转到 jar 包中 T-index.html
注意:jar保重的
html中引用的js、css文件提示404需要TTUiConfig做如下改造:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.templatemode.TemplateMode;
import java.nio.charset.StandardCharsets;
/**
* @author
* @date 2024/1/26 9:59
*/
@Configuration
public class TTUiConfig implements WebMvcConfigurer {
@Autowired
private ApplicationContext applicationContext;
@Bean
public SpringResourceTemplateResolver ttTemplateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(this.applicationContext);
resolver.setPrefix("classpath:/t-ui/");
resolver.setSuffix(".html");
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
resolver.setCacheable(true);
resolver.setOrder(10);
resolver.setCheckExistence(true);
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("/t/**")) {
registry.addResourceHandler("/t/**")
.addResourceLocations("classpath:/t-ui/");
}
}
}
9308

被折叠的 条评论
为什么被折叠?



