spring-boot集成thymeleaf。

thymeleaf是前台页面展示,原来一直是jsp,jsp中包含很多服务器端的逻辑,逐渐淘汰。同样功能的还有freemarker。孰好孰坏不予评价,只做简单实现。

1、基本思路

  (1)pom.xml中配置依赖。

  (2)写页面。

  (3)Controller的改动。

2、实现

  (1)需要在pom.xml中添加代码如下:

    

<!-- thymeleaf -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

  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.sun</groupId>
  <artifactId>spring-boot-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>
    
    <dependencies>
          <!-- web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <!-- thymeleaf -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.2.0</version>
        </dependency>
        
        
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        
        
        <!-- 热部署 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        
        <!-- redis cache related.....start -->  
        <dependency>  
            <groupId>org.springframework.data</groupId>  
            <artifactId>spring-data-redis</artifactId>  
        </dependency>  
        <dependency>  
            <groupId>redis.clients</groupId>  
            <artifactId>jedis</artifactId>  
        </dependency>
    </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
View Code

  (2)页面写个得到全体User的展现页面吧。

  

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
    <head>
        <title>Hello World!</title>
    </head>
    <body>
        <h1 th:inline="text">Hello World!</h1>
                
        <p id="userList" th:text="${userList}"></p>
        <th:block th:each="user,index:${userList}">
            <span th:text="${user.id}" ></span>
            <span th:text="${user.username}" ></span>
            <span th:text="${user.password}" ></span>
            <br/>
        </th:block>
    </body>
</html>

  (3)修改Controller。修改代码如下:

@RequestMapping("/all")
    public String findAll(Map<String,Object> map){
        List<User> userList = userMapper.selectAll();
        map.put("hello","PPBOY");
        map.put("userList",userList);
        return "/test";
    }

Controller源码如下,记得把@RestController换成@Controller:

package com.sun.controller;


import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.sun.beans.RedisCacheUtil;
import com.sun.dao.UserMapper;
import com.sun.model.User;


@Controller
@RequestMapping("/test")
public class TestController {

    @Resource
    private UserMapper userMapper;
    
    @RequestMapping("/hello")  
    public String hello(){  
        return "Hello world!";  
    }  
    
    @RequestMapping("/all")
    public String findAll(Map<String,Object> map){
        List<User> userList = userMapper.selectAll();
        map.put("hello","PPBOY");
        map.put("userList",userList);
        return "/test";
    }
    

    @Autowired
    private RedisCacheUtil<User> redisCache;

    @RequestMapping("/testGetCache")
    public String testGetCache()
    {

        System.out.println("------------user");
        Map<Integer,User> userMap = redisCache.getCacheIntegerMap("userMap");
        for(int key : userMap.keySet())
        {
            System.out.println("key = " + key + ",value=" + userMap.get(key));
        }
        return "/test";
    }
}
View Code

3、总结

  (1)模板引擎最终还是要和Controller做联系的,所以两者的关联是重点。

    需要在controller的对应方法中return一个字符串是文件路径,比如return "/test"。

  (2)页面访问地址需要的@RequestMapping("/") 这个写到Controller的方法中,访问这个方法,就是http://localhost:8080/就可以了

  (3)为什么我的项目代码在myeclipse中会给个 Initializing Spring Project '***'". java.lang.IllegalArgumentException这样的提示,但是启动项目没问题啊??妈的,我怀疑我myeclipse有问题。

  (4)模板引擎要放到resources下的templates文件夹下。

  

  (5)最后还要记得在application.properties中添加代码关闭模板引擎的缓存。

########################################################
###THYMELEAF (ThymeleafAutoConfiguration)
########################################################
#spring.thymeleaf.prefix=classpath:/templates/
#spring.thymeleaf.suffix=.html
#spring.thymeleaf.mode=HTML5
#spring.thymeleaf.encoding=UTF-8
# ;charset=<encoding> is added
#spring.thymeleaf.content-type=text/html
# set to false for hot refresh
spring.thymeleaf.cache=false

 源码已上传https://github.com/sunfengjiajia/spring-boot-test

欢迎大家加我qq:309620263探讨技术问题。
原文地址:https://www.cnblogs.com/PPBoy/p/7130690.html