spring使用thymeleaf
一、spring使用thymeleaf做解析器其实很简单,这是基于xml配置的方式
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd">
- <context:component-scan base-package="com.test.controller"></context:component-scan>
- <!-- 开启mvc注解,可使用@DateTimeFormat,@NumberFormat -->
- <mvc:annotation-driven></mvc:annotation-driven>
- <!-- 告知静态文件不要拦截,直接访问,这种方式下面那种要好在可以访问web-info下的资源 -->
- <mvc:resources location="/WEB-INF/css/" mapping="/css/**"></mvc:resources>
- <mvc:resources location="/WEB-INF/js/" mapping="/js/**"></mvc:resources>
- <mvc:resources location="/WEB-INF/images/" mapping="/images/**"></mvc:resources>
- <!-- 配置默认servlet静态资源访问 -->
- <!-- <mvc:default-servlet-handler/> -->
- <!-- SpringResourceTemplateResolver automatically integrates with Spring's
- own -->
- <!-- resource resolution infrastructure, which is highly recommended. -->
- <bean id="templateResolver"
- class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
- <property name="prefix" value="/WEB-INF/templates/" />
- <property name="suffix" value=".html" />
- <!-- HTML is the default value, added here for the sake of clarity. -->
- <property name="templateMode" value="HTML" />
- <!-- Template cache is true by default. Set to false if you want -->
- <!-- templates to be automatically updated when modified. -->
- <property name="cacheable" value="false" />
- <property name="characterEncoding" value="UTF-8"/>
- </bean> <!-- SpringTemplateEngine automatically applies SpringStandardDialect and --> <!-- enables Spring's own MessageSource message resolution mechanisms. --> <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver" /> <!-- Enabling the SpringEL compiler with Spring 4.2.4 or newer can speed up --> <!-- execution in most scenarios, but might be incompatible with specific --> <!-- cases when expressions in one template are reused across different data --> <!-- ypes, so this flag is "false" by default for safer backwards --> <!-- compatibility. --> <property name="enableSpringELCompiler" value="true" /> </bean> <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver"> <property name="templateEngine" ref="templateEngine" /> <!-- NOTE 'order' and 'viewNames' are optional --> <property name="order" value="1" />
- <property name="characterEncoding" value="UTF-8"/>
- <!-- Controller中返回的视图名后缀包含leaf的,才会进行解析 --> <!-- <property name="viewNames" value="*leaf" /> --> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsps/" /> <property name="suffix" value=".jsp" /> <property name="order" value="" /> <!-- Controller中返回的视图名后缀包含jsp的,才会进行解析 --> <!-- <property name="viewNames" value="*jsp" /> --> </bean> </beans>
和我们传统的配置文件相比,也就多增加了红色的部分,如果你的项目不会使用到jsp,那么就没有必要再配置jsp的解析器了
二、基于注解的配置,首先这个web.xml需要改动成下面这个样子
- <?xml version="1.0" encoding="utf-8"?>
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
- http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
- version="3.1" metadata-complete="true">
- <!-- Configure ContextLoaderListener to use AnnotationConfigWebApplicationContext
- instead of the default XmlWebApplicationContext -->
- <context-param>
- <param-name>contextClass</param-name>
- <param-value>
- org.springframework.web.context.support.AnnotationConfigWebApplicationContext
- </param-value>
- </context-param>
- <!-- Configuration locations must consist of one or more comma- or space-delimited
- fully-qualified @Configuration classes. Fully-qualified packages may also be
- specified for component-scanning -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>com.test.dao.configure.ApplicationConfigure</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>springMVC</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!-- Configure DispatcherServlet to use AnnotationConfigWebApplicationContext
- instead of the default XmlWebApplicationContext -->
- <init-param>
- <param-name>contextClass</param-name>
- <param-value>
- org.springframework.web.context.support.AnnotationConfigWebApplicationContext
- </param-value>
- </init-param>
- <!-- Again, config locations must consist of one or more comma-(逗号) or space-delimited(空格)
- and fully-qualified @Configuration classes -->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>com.test.mvc.configure.SpringWebConfig</param-value>
- </init-param>
- <load-on-startup></load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>springMVC</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <filter>
- <filter-name>characterEncodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-</param-value>
- </init-param>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>characterEncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
标红部分就是与传统web.xml配置的区别。
下面是声明thymeleaf的java配置方式
- package com.test.mvc.configure;
- import org.springframework.beans.BeansException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.support.ResourceBundleMessageSource;
- import org.springframework.format.FormatterRegistry;
- import org.springframework.web.servlet.config.annotation.EnableWebMvc;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
- import org.thymeleaf.spring4.SpringTemplateEngine;
- import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
- import org.thymeleaf.spring4.view.ThymeleafViewResolver;
- import org.thymeleaf.templatemode.TemplateMode;
- import com.test.fomatter.MyDateFormatter;
- @Configuration
- @EnableWebMvc
@ComponentScan(basePackages = { "com.test.controller" }, includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {
org.springframework.stereotype.Controller.class }) })
- public class SpringWebConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {
- private ApplicationContext applicationContext;
- public SpringWebConfig() {
- super();
- }
- public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
- this.applicationContext = applicationContext;
- }
- /* ******************************************************************* */
- /* GENERAL CONFIGURATION ARTIFACTS */
- /* Static Resources, i18n Messages, Formatters (Conversion Service) */
- /*配置静态资源,i18n 信息, 格式转换器*/
- /* ******************************************************************* */
- @Override
- public void addResourceHandlers(final ResourceHandlerRegistry registry) {
- super.addResourceHandlers(registry);
- registry.addResourceHandler("/images/**").addResourceLocations("/images/");
- registry.addResourceHandler("/css/**").addResourceLocations("/css/");
- registry.addResourceHandler("/js/**").addResourceLocations("/js/");
- }
- @Bean
- public ResourceBundleMessageSource messageSource() {
- ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
- //设置国际化资源的baseName
- messageSource.setBasename("Messages");
- return messageSource;
- }
- /**
- * 添加转换器
- */
- @Override
- public void addFormatters(final FormatterRegistry registry) {
- super.addFormatters(registry);
- registry.addFormatter(varietyFormatter());
- }
- @Bean
- public MyDateFormatter varietyFormatter() {
- return new MyDateFormatter("yyyy-MM-dd");
- }
- /* **************************************************************** */
- /* THYMELEAF-SPECIFIC ARTIFACTS */
- /* TemplateResolver <- TemplateEngine <- ViewResolver */
- /* **************************************************************** */
- /**
- * thymeleaf的模板解析器
- * @return
- */
- @Bean
- public SpringResourceTemplateResolver templateResolver() {
- // SpringResourceTemplateResolver automatically integrates with Spring's
- // own
- // resource resolution infrastructure, which is highly recommended.
- SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
- templateResolver.setApplicationContext(this.applicationContext);
- templateResolver.setPrefix("/WEB-INF/templates/");
- templateResolver.setSuffix(".html");
- // HTML is the default value, added here for the sake of clarity.
- //模板解析模式使用HTML模式
- templateResolver.setTemplateMode(TemplateMode.HTML);
- // Template cache is true by default. Set to false if you want
- // templates to be automatically updated when modified.
- //是否缓存模板,默认是true,不过在调试的时候最好是false,因为模板随时需要改变
- templateResolver.setCacheable(false);
templateResolver.setCharacterEncoding("utf-8");- return templateResolver;
- }
- /**
- * thymeleaf的模板引擎
- * @return
- */
- @Bean
- public SpringTemplateEngine templateEngine() {
- // SpringTemplateEngine automatically applies SpringStandardDialect and
- // enables Spring's own MessageSource message resolution mechanisms.
- SpringTemplateEngine templateEngine = new SpringTemplateEngine();
- templateEngine.setTemplateResolver(templateResolver());
- // Enabling the SpringEL compiler with Spring 4.2.4 or newer can
- // speed up execution in most scenarios, but might be incompatible
- // with specific cases when expressions in one template are reused
- // across different data types, so this flag is "false" by default
- // for safer backwards compatibility.
- templateEngine.setEnableSpringELCompiler(true);
- return templateEngine;
- }
- /**
- * thymeleaf的视图解析器
- * @return
- */
- @Bean
- public ThymeleafViewResolver viewResolver() {
- ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
- viewResolver.setTemplateEngine(templateEngine());
- templateResolver.setCharacterEncoding("utf-8");
- return viewResolver;
}
}
spring使用thymeleaf的更多相关文章
- spring boot + thymeleaf 3 国际化
在给spring boot 1.5.6 + thymeleaf 3进行国际化时,踩了一个坑(其实不止一个). 现象: 看到了吧, 就是取值的key, 后面被加了_en_US 或 _zh_CN, 以及前 ...
- spring boot + Thymeleaf开发web项目
"Spring boot非常适合Web应用程序开发.您可以轻松创建自包含的HTTP应用.web服务器采用嵌入式Tomcat,或者Jetty等.大多数情况下Web应用程序将使用 spring- ...
- Spring boot +Spring Security + Thymeleaf 认证失败返回错误信息
[Please make sure to select the branch corresponding to the version of Thymeleaf you are using] Stat ...
- Spring boot+Thymeleaf+easyui集成:js创建组件页面报错
开发工具:Ideal 使用场景:Demo 前提: 环境:Spring boot +Thymeleaf+easyui 引入thymeleaf模板引擎 <html lang=" ...
- spring boot: thymeleaf模板引擎使用
spring boot: thymeleaf模板引擎使用 在pom.xml加入thymeleaf模板依赖 <!-- 添加thymeleaf的依赖 --> <dependency> ...
- Spring MVC + Thymeleaf
参考网址: https://www.cnblogs.com/litblank/p/7988689.html 一.简介 1.Thymeleaf 在有网络和无网络的环境下皆可运行,而且完全不需启动WEB应 ...
- Spring Boot Thymeleaf 实现国际化
开发传统Java WEB工程时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用了.SpringBoot支持如下页面模板语言 Thymeleaf FreeMarker Vel ...
- 图书-技术-SpringBoot:《Spring Boot2 + Thymeleaf 企业应用实战》
ylbtech-图书-技术-SpringBoot:<Spring Boot2 + Thymeleaf 企业应用实战> <Spring Boot 2+Thymeleaf企业应用实战&g ...
- spring boot + thymeleaf 乱码问题
spring boot + thymeleaf 乱码问题 hellotrms 发布于 2017/01/17 15:27 阅读 1K+ 收藏 0 答案 1 开发四年只会写业务代码,分布式高并发都不会还做 ...
随机推荐
- 【LEETCODE】32、LeetCode的第35题,查找插入的位置
凉凉,看来想做好一个题还不容易啊... 有点难受... 1.看看题目吧 Given a sorted array and a target value, return the index if the ...
- Django之forms组件进阶
Django Form表单组件 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要 ...
- Centos7 fstab盘符挂载硬盘导致重启系统失败解决办法
服务器拥有多个硬盘插槽,在进行维护或重启时,这些硬盘的相对位置可能发生变化.利用盘符(dev/vda)方式挂载磁盘,可能由于磁盘顺序变化导致重启时读取fstab文件发生错误,从而无法正常重启服务器. ...
- java源码解析之String类(五)
/* * 切片函数,非常重要,这里一定要牢记beginIndex是开始位置,endIndex是结束位置,区别于以前学的offset是开始位置,而count或length是个数和长度 * 比如说,new ...
- tar 命令参数解释
tar 命令 tar [-cxtzjvfpPN]文件与目录参数说明:-c :建立一个打包文件:-x :解开一个打包文件:-t :查看 tar包里面的文件:(特别注意,在选择参数时,c/x/t仅能存在一 ...
- redis安装与php安装redis模块
一.安装redis 1.下载 wget https://github.com/antirez/redis/archive/2.8.23.tar.gz 2.解压缩 tar -zxvf 2.8.23.ta ...
- 【半小时大话.net依赖注入】(一)理论基础+实战控制台程序实现AutoFac注入
系列目录 第一章|理论基础+实战控制台程序实现AutoFac注入 第二章|AutoFac的常见使用套路 第三章|实战Asp.Net Framework Web程序实现AutoFac注入 第四章|实战A ...
- Disruptor 详解 一
这篇博客将主要通过几个示例,简单讲述 Disruptor 的使用方法: 一.disruptor 简介 Disruptor 是英国外汇交易公司 LMAX 开发的一个无锁高性能的线程间消息传递的框架.目前 ...
- ECharts 地图绘制与钻取简易接口
1.地图绘制过程原理 给定范围边界经纬度数据,再给它个名字就构成了绘制地图的基础.也就是说,你可以绘制任意形状的地图版块. 2.地图数据生成 中国以及省市县等地图的基础数据可以从这里生成与下载. ht ...
- [深度学习]TensorFlow安装
virtualenv 可以用来建立一个专属于项目的python环境,保持一个干净的环境.只需要通过命令创建一个虚拟环境,不用的时候通过命令退出,删除.实践证明用虚拟环境能避免很多糟心的事. 下面介绍一 ...