SpringMVC整合thymeleaf模板
SpringMVC整合thymeleaf模板
1、thymeleaf的依赖
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
2、thymeleaf视图解析器的配置
2.1 基于java的配置
package com.zhou.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
@Configuration
public class ThymeleafConfig {
@Bean //Thymeleaf视图解析器
public ViewResolver viewResolver(TemplateEngine templateEngine){
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine);
viewResolver.setOrder(1);
viewResolver.setCharacterEncoding("utf-8");
return viewResolver;
}
@Bean //模板引擎
public TemplateEngine templateEngine(SpringResourceTemplateResolver springResourceTemplateResolver){
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(springResourceTemplateResolver);
return templateEngine;
}
@Bean //模板解析器
public SpringResourceTemplateResolver springResourceTemplateResolver (){
SpringResourceTemplateResolver springResourceTemplateResolver = new SpringResourceTemplateResolver();
springResourceTemplateResolver.setPrefix("/");
springResourceTemplateResolver.setSuffix(".html");
springResourceTemplateResolver.setCacheable(false);
springResourceTemplateResolver.setTemplateMode("HTML5");
return springResourceTemplateResolver;
}
}
2.2 bean(xml文件)的配置方式
<!-- 使用thymeleaf解析 -->
<bean id="templateResolver"
class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
<property name="cacheable" value="false" />
</bean>
<bean id="templateEngine"
class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="order" value="1" />
<property name="templateEngine" ref="templateEngine" />
<!--解决中文乱码-->
<property name="characterEncoding" value="UTF-8"/>
</bean>
3、静态资源屏蔽和项目名的获取及向服务器请求
3.1 可以将静态资源如css,js,html统一放到static目录中
3.2 静态资源屏蔽配置
<mvc:resources mapping="/static/**" location="/static/" />
4、项目路径的获取
在jsp下使用${pageContext.request.contextPath}
在thymeleaf下怎么获取?
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1 th:text="${text}"></h1>
<!-- html正常使用thymeleaf模板方式即可 -->
<form th:action="@{/test/test2}">
<input type="text" name="name">
<input type="text" name="sex">
<button type="submit">提交</button>
</form>
<button onclick="test()">click</button>
</body>
<script th:src="@{/static/js/jquery.min.js}"></script>
<script>
// contextPath获取项目路径
var contextPath = [[@{/}]];
function test(){
$.post(contextPath+"test/index",{},function(data){
alert(data);
})
}
</script>
</html>
5、@ResponseBody解决中文乱码问题
springmvc.xml中配置mvc:annotation-driven
<mvc:annotation-driven>
<mvc:message-converters
register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes"
value="text/plain;charset=UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>