项目场景:
提示:这里简述项目相关背景:
项目场景:SSM前端使用Thymeleaf进行编写
解决方案:
在springMvc进行请求拦截后,使用资源放行,之后注册模板引擎、视图解析器
一定进行资源放行
@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/templates/**").addResourceLocations("/templates/");
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/img/**").addResourceLocations("/img/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
// registry.addResourceHandler("/photos/**").addResourceLocations("/photos/", "/Users/zc/Desktop/ems-thymeleaf资料/ems-thymeleaf资料/webdemo_2/src/main/webapp/photos");
//暴露路径
String projectDir = System.getProperty("user.dir");
System.out.println(projectDir);
String photoPath = "file:" + projectDir + "/photo/";
System.out.println(photoPath);
registry.addResourceHandler("/photo/**")
.addResourceLocations(photoPath);
}
}
除了必要的ssm依赖之外,还需要在pom文件中导入thymelef与spring整合的依赖
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
<!-- thymeleaf整合springsecurity5的标签库 -->
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
依赖添加完毕,开始注册bean对象
可以在配置类中进行添加,可以新建配置类,也可以在原有的springMvc和spring配置类中写,能让其扫描到就可以,以下是相关代码
/*
此配置需要注意以下几点:
templateResolver的prefix与suffix对应你的视图层的文件位置
templateResolver的characterEncoding和viewResolver的都要设置成UTF-8中文才不会乱码。
templateResolver的cacheable一定要在开发的时候设置成false不然无法看到实时的页面数据
*/
//设置模板文件的字符编码
public final static String CHARACTER_ENCODING = "UTF-8";
/**
* thymeleaf模板引擎参数
*/
//设置模板文件的前缀
public final static String TEMPLATE_PREFIX = "/templates/";
//设置模板文件的后缀
public final static String TEMPLATE_SUFFIX = ".html";
// 设置模板是否启用缓存
public final static Boolean TEMPLATE_CACHEABLE = false;
//设置模板的解析模式
public final static String TEMPLATE_MODE = "HTML5";
//设置模板的解析顺序
public final static Integer TEMPLATE_ORDER = 1;
/**
* 模板解析器
* https://codeleading.com/article/7037112868/#google_vignette
*
* @return
*/
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix(TEMPLATE_PREFIX);
templateResolver.setSuffix(TEMPLATE_SUFFIX);
templateResolver.setCacheable(TEMPLATE_CACHEABLE);
templateResolver.setCharacterEncoding(CHARACTER_ENCODING);
templateResolver.setTemplateMode(TEMPLATE_MODE);
templateResolver.setOrder(TEMPLATE_ORDER);
return templateResolver;
}
/**
* 模板引擎
*
* @return
*/
@Bean
public SpringTemplateEngine springTemplateEngine(SpringResourceTemplateResolver templateResolver) {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
return templateEngine;
}
/**
* 视图解析器
*
* @return
*/
@Bean
public ThymeleafViewResolver viewResolver(SpringTemplateEngine springTemplateEngine) {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(springTemplateEngine);
viewResolver.setCharacterEncoding(CHARACTER_ENCODING);
return viewResolver;
}