Spring_配置Thymeleaf


世界上最快樂的事,莫過於為理想而奮斗。——蘇格拉底

JSP和Thymeleaf

  大多數的JSP模板都是采用HTML的形式,但是又摻雜上了各種JSP標簽庫的標簽,在Web瀏覽器或HTML編輯器展現的結果很難在審美上接近模板最終所渲染出來的效果。

  同時JSP規范是與Servlet規范緊密耦合,它只能作用於基於Servlet的Web應用中,JSP模板不能作為通用模板,也不能作用於非Servlet的Web應用。

  Thymeleaf模板是原生的,不依賴於標簽庫,它能在接受原始HTML的地方進行編輯和渲染,且因為它沒有與Servlet規范耦合,因此Thymeleaf模板能夠進入JSP模板 非法涉足的領域(如格式化Email)。

  下面介紹如何在SpringMVC中使用Thymeleaf。

配置Thymeleaf

  為了要在Spring中使用Thymeleaf,我們需要配置三個啟用Thymeleaf與Spring集成的bean:

    1. ThymeleafViewResolver:將視圖名稱解析為Thymeleaf模板視圖。

    2. SpringTemplateEngine:處理模板並渲染結果。

    3. TemplateResolver:加載Thymeleaf模板。

  pom.xml配置文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
  xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation
="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cn.spring.study</groupId> <artifactId>spring-thymeleaf</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.14.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.14.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.1.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring4 --> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring4</artifactId> <version>3.0.2.RELEASE</version> </dependency> </dependencies> </project>

  使用Java配置DispatcherServlet代碼如下:

package com.spring.thymeleaf.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
/**
 * 配置DispatcherServlet
 * @author 
 *
 */
public class ThymeleafWebAppInitialzer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return new Class<?>[] { RootConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        // TODO Auto-generated method stub
        return new Class<?>[] { WebConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        // TODO Auto-generated method stub
        return new String[] { "/" };
    }

}

  使用Java配置Spring代碼如下:

package com.spring.thymeleaf.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;

@Configuration
@EnableWebMvc
@ComponentScan("com.spring")
public class WebConfig extends WebMvcConfigurerAdapter {
    
    /**
     * 配置模板解析器
     */
    @Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver
            = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        return templateResolver;
    }
    
    /**
     * 配置模板引擎
     */
    @Bean
    public TemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine =
                new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        return templateEngine;
    }
    
    /**
     * 配置Thymeleaf模板視圖解析器
     */
    @Bean
    public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
        System.err.println("=========================ViewResolver");
        ThymeleafViewResolver viewResolver = 
                new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine);
        return viewResolver;
    }
    
    
    
    /**
     * 配置靜態資源處理
     */
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        // TODO Auto-generated method stub
        configurer.enable();;
    }
}

  如此Thymeleaf配置好了,接下來配置Thymeleaf模板文件。

定義Thymeleaf模板

<html xmlns="http://www.w3.org/1999/xhmtl"
      xmlns:th="http://www.thymeleaf.org"
>
<head>
<title>thymeleaf</title>
</head>
<body>
    <h1>Welcome to thymeleaf!</h1>
    <a th:href="">Spittles</a>
</body>
</html>

  如此一個簡單的Thymeleaf模板就定義好了,接下來是借助Thymeleaf實現表單綁定,未完待續...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM