• 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探讨技术问题。
  • 相关阅读:
    SiteMap 提交,并使用正确的方式提交给搜索引擎
    爱自己的人脸上散发的光芒是骗不了别人的,你会活在平静淡定喜悦中,绝少埋怨,鲜有不满,没有太多话需要澄清,说清楚,内心是一片宁静而有力量的海。
    PHP 调用webService方式
    Oracle数据库操作知道
    气泡 弹出 bootstrap-popover的配置与灵活应用
    mysql向表中某字段后追加一段字符串:
    LINUX 下安装一些东西,PHP Apach SSL 等
    在同一个页面上要使用多个百度分享,控件人分享的内容信息
    Linux study
    Mysql 备份
  • 原文地址:https://www.cnblogs.com/PPBoy/p/7130690.html
Copyright © 2020-2023  润新知