SpringBoot入门 一 构建简单工程

  1. 环境准备:jdk1.7(推荐)以上,tomcat8(推荐)以上,或者使用插件自带。mevan插件3.2以上,eclipse编辑工具
  2. pom文件基本配置如下
    <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>springboot</groupId>
        <artifactId>weboot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>weboot</name>
        <url>http://maven.apache.org</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <parent>
            <!--Spring Boot基础父类,其中包含了很多必要的jar包,如果不使用父类,则需要自己去依赖这些jars -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.3.3.RELEASE</version>
        </parent>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
    
            <!-- web程序的启动项依赖,通过此依赖可引入内嵌的tomcat等web必须的jars -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- spring-boot aop- -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
            <!-- thymeleaf程序的启动项依赖,spring-boot对thymeleaf模板引擎支持最好,建议模板引擎使用此框架 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <!-- mysql依赖,使用spring-data-jpa需要指定一个数据库方言,用于连接数据库,即mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <!-- 通过maven构建的插件 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
  3. 手动添加 config,templates,static 文件夹 分别存放配置文件,模板,静态文件(js,css等)
  4. 模板格式其一详解

    Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。

    Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。

    Thymeleaf的模板还可以用作工作原型,Thymeleaf会在运行期替换掉静态值。例如下面的html文件,当作为静态文件时,product name显示为Red Chair,当运行在容器中并提供product这个对象时,product name的值会自动替换为product.description对应的值。

    1.bean值替换
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 2</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Answer for exercise 1: bean values</h1>
    10         <h2>Product information</h2>
    11         <dl>
    12             <dt>Product name</dt>
    13             <dd th:text="${product.description}">Red Chair</dd>
    14 
    15             <dt>Product price</dt>
    16             <dd th:text="${product.price}">350</dd>
    17 
    18             <dt>Product available from</dt>
    19             <dd th:text="${product.availableFrom}">2014-12-01</dd>
    20         </dl>
    21     </body>
    22 </html>
    2.简单数据转换(数字,日期)
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 2</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Answer for exercise 2: bean values</h1>
    10         <h2>Product information</h2>
    11         <dl>
    12             <dt>Product name</dt>
    13             <dd th:text="${product.description}">red Chair</dd>
    14 
    15             <dt>Product price</dt>
    16             <dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}">180</dd>
    17 
    18             <dt>Product available from</dt>
    19             <dd th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}">2014-12-01</dd>
    20         </dl>
    21     </body>
    22 </html>
    3.字符串拼接
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 3</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Answer for exercise 3: string concatenation</h1>
    10         <h2>Product information</h2>
    11         <dl>
    12             <dt>Product price</dt>
    13             <dd th:text="${'$'+product.price}">235</dd>
    14         </dl>
    15     </body>
    16 </html>
    4.国际化
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title th:text="#{tutorial.exercise4}">Thymeleaf tutorial: exercise 4</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1 th:text="#{tutorial.exercise4}">Thymeleaf tutorial - Solution for exercise 4: internationalization</h1>
    10         <h2 th:text="#{product.info}">Product information</h2>
    11         <dl>
    12             <dt th:text="#{product.name}">Product name</dt>
    13             <dd th:text="${product.description}">Red chair</dd>
    14 
    15             <dt th:text="#{product.price}">Product price</dt>
    16             <dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}">350</dd>
    17 
    18             <dt th:text="#{product.available}">Product available from</dt>
    19             <dd th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}">28-Jun-2013</dd>
    20         </dl>
    21     </body>
    22 </html>

    此时html需要相应的配置文件。例如如下配置文件:

    en:

    tutorial.exercise4=Thymeleaf tutorial - exercise 4: internationalization
    product.info=Product information
    product.name=Product name
    product.price=Product price
    product.available=Product available from
    back=Back

    fr

    tutorial.exercise4=Tutorial De Thymeleaf - exercice 4: l'internationalisation
    product.info=Information du produit
    product.name=Nom du produit
    product.price=Prix du produit
    product.available=Produit disponible depuis
    back=Revenir
    5.转义和非转义文本
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 5</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Solution for exercise 5: escaped and unescaped text</h1>
    10         <div th:text="${html}">
    11             Some escaped text
    12         </div>
    13         <div th:utext="${html}">
    14             Some unescaped text
    15         </div>
    16     </body>
    17 </html>

    上述两个div分别生成的html代码为

    <div>This is an <em>HTML</em> text. <b>Enjoy yourself!</b></div>
    <div>This is an <em>HTML</em> text. <b>Enjoy yourself!</b></div>
    6.迭代
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 6</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Answer for exercise 6: iteration</h1>
    10         <h2>Product list</h2>
    11         <table>
    12             <thead>
    13                 <tr>
    14                     <th>Description</th>
    15                     <th>Price</th>
    16                     <th>Available from</th>
    17                 </tr>
    18             </thead>
    19             <tbody th:remove="all-but-first">
    20                 <tr th:each="product:${productList}">
    21                     <td th:text="${product.description}">Red Chair</td>
    22                     <td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}">$123</td>
    23                     <td th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}">2014-12-01</td>
    24                 </tr>
    25                 <tr>
    26                     <td>White table</td>
    27                     <td>$200</td>
    28                     <td>15-Jul-2013</td>
    29                 </tr>
    30                 <tr>
    31                     <td>Reb table</td>
    32                     <td>$200</td>
    33                     <td>15-Jul-2013</td>
    34                 </tr>
    35                 <tr>
    36                     <td>Blue table</td>
    37                     <td>$200</td>
    38                     <td>15-Jul-2013</td>
    39                 </tr>
    40             </tbody>
    41         </table>
    42     </body>
    43 </html>
    7.迭代统计
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 7</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Solution for exercise 7: iteration stats</h1>
    10         <h2>Product list</h2>
    11         <table>
    12             <thead>
    13                 <tr>
    14                     <th>Index</th>
    15                     <th>Description</th>
    16                     <th>Price</th>
    17                     <th>Available from</th>
    18                 </tr>
    19             </thead>
    20             <tbody th:remove="all-but-first">
    21                 <tr th:each="product : ${productList}">
    22                     <td th:text="${productStat.count}">1</td>
    23                     <td th:text="${product.description}">Red chair</td>
    24                     <td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}">$350</td>
    25                     <td th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}">28-Jun-2013</td>
    26                 </tr>
    27                 <tr>
    28                     <td>2</td>
    29                     <td>White table</td>
    30                     <td>$200</td>
    31                     <td>15-Jul-2013</td>
    32                 </tr>
    33                 <tr>
    34                     <td>3</td>
    35                     <td>Reb table</td>
    36                     <td>$200</td>
    37                     <td>15-Jul-2013</td>
    38                 </tr>
    39                 <tr>
    40                     <td>4</td>
    41                     <td>Blue table</td>
    42                     <td>$200</td>
    43                     <td>15-Jul-2013</td>
    44                 </tr>
    45             </tbody>
    46         </table>
    47     </body>
    48 </html>
    8.条件判断
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 8</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Answer for exercise 8: conditions</h1>
    10         <h2>Product list</h2>
    11         <table>
    12             <thead>
    13                 <tr>
    14                     <th>Description</th>
    15                     <th>Price</th>
    16                     <th>Available from</th>
    17                     <th></th>
    18                 </tr>
    19             </thead>
    20             <tbody>
    21                 <tr th:each="product : ${productList}">
    22                     <td th:text="${product.description}">Red chair</td>
    23                     <td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}">$350</td>
    24                     <td th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}">28-Jun-2013</td>
    25                     <td>
    26                         <span th:if="${product.price lt 100}" class="offer">Special offer!</span>
    27                     </td>
    28                 </tr>
    29             </tbody>
    30         </table>
    31     </body>
    32 </html>
    9.更多条件判断
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 9</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Answer for exercise 9: more on conditions</h1>
    10         <h2>Customer list</h2>
    11         <table>
    12             <thead>
    13                 <tr>
    14                     <th>First name</th>
    15                     <th>Last name</th>
    16                     <th>Gender</th>
    17                     <th>Payment method</th>
    18                     <th>Balance</th>
    19                 </tr>
    20             </thead>
    21             <tbody th:remove="all-but-first">
    22                 <tr th:each="customer : ${customerList}">
    23                     <td th:text="${customer.firstName}">Peter</td>
    24                     <td th:text="${customer.lastName}">Jackson</td>
    25                     <!-- 
    26                        Use th:switch for selecting content based on ${customer.gender}.
    27                        As genre can be null if unknown, better use ${customer.gender?.name()}
    28                        for obtaining its name.
    29                     -->
    30                     <td th:switch="${customer.gender?.name()}">
    31                         <img th:case="'MALE'" src="../../../images/male.png" th:src="@{/images/male.png}" alt="Male" /> <!-- Use "/images/male.png" image -->
    32                         <img th:case="'FEMALE'" src="../../../images/female.png" th:src="@{/images/female.png}" alt="Female" /> <!-- Use "/images/female.png" image -->
    33                         <span th:case="*">Unknown</span>
    34                     </td>
    35                     <td>
    36                         <span th:text="${customer.paymentMethod.description}">Direct debit</span>
    37                         <!-- Show next message only when paymentMethod is not CREDIT_CARD -->
    38                         <span th:unless="${customer.paymentMethod.name() == 'CREDIT_CARD'}" class="warn">
    39                             Payment must be done in the next 4 days
    40                         </span>
    41                     </td>
    42                     <!-- Add class="enhanced" when balance is greater than 10000 -->
    43                     <td th:class="${customer.balance gt 10000} ? 'enhanced'" th:text="${customer.balance}">350</td>
    44                 </tr>
    45                 <tr>
    46                     <td>Mary</td>
    47                     <td>Johanson</td>
    48                     <td><img src="../../../images/female.png" /></td>
    49                     <td><span>Credit card</span></td>
    50                     <td>5000</td>
    51                 </tr>
    52                 <tr>
    53                     <td>Robert</td>
    54                     <td>Allen</td>
    55                     <td><img src="../../../images/male.png" /></td>
    56                     <td>
    57                         <span>Credit card</span>
    58                         <span class="warn">Payment must be done in the next 4 days</span>
    59                     </td>
    60                     <td class="enhanced">50000</td>
    61                 </tr>
    62             </tbody>
    63         </table>
    64     </body>
    65 </html>
    10.Spring表达式语言
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 10</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Solution for exercise 10: Spring Expression language</h1>
    10   
    11         <h2>Arithmetic expressions</h2>
    12         <p class="label">Four multiplied by minus six multiplied by minus two module seven:</p>
    13         <p class="answer" th:text="${4 * -6 * -2 % 7}">123</p>
    14  
    15         <h2>Object navigation</h2>
    16         <p class="label">Description field of paymentMethod field of the third element of customerList bean:</p>
    17         <p class="answer" th:text="${customerList[2].paymentMethod.description}">Credit card</p>
    18  
    19         <h2>Object instantiation</h2>
    20         <p class="label">Current time milliseconds:</p>
    21         <p class="answer" th:text="${new java.util.Date().getTime()}">22-Jun-2013</p>
    22         
    23         <h2>T operator</h2>
    24         <p class="label">Random number:</p>
    25         <p class="answer" th:text="${T(java.lang.Math).random()}">123456</p>
    26     </body>
    27 </html>
    11.超链接
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 11</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Answer for exercise 11: links</h1>
    10         <h2>Product actions</h2>
    11         <ul>
    12             <li><a href="#" th:href="@{/exercise11/product.html(action='view')}">View product</a></li>
    13             <li><a href="#" th:href="@{/exercise11/product.html(action='edit')}">Edit product</a></li>
    14         </ul>
    15     </body>
    16 </html>
    12.表单
     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3     <head>
     4         <title>Thymeleaf tutorial: exercise 12</title>
     5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
     6         <meta charset="utf-8" />
     7     </head>
     8     <body>
     9         <h1>Thymeleaf tutorial - Solution for exercise 12: forms</h1>
    10         <h2>Customer edition</h2>
    11         <form action="saveCustomer.html" th:action="@{/exercise12/saveCustomer.html}" th:object="${customer}" method="post">
    12             <input type="hidden" th:field="*{id}" />
    13             
    14             <label for="firstName">First name:</label>
    15             <input type="text" th:field="*{firstName}" value="John" />
    16             
    17             <label for="lastName">Last name:</label>
    18             <input type="text" th:field="*{lastName}" value="Wayne" />
    19             
    20             Genre:
    21             <div th:each="gender : ${genders}" class="radio">
    22                 <input type="radio" th:value="${gender}" th:field="*{gender}" />
    23                 <label th:for="${#ids.prev('gender')}" th:text="${gender.description}">Male</label>
    24             </div>
    25             <div th:remove="all" class="radio">
    26                 <input type="radio" />
    27                 <label>Female</label>
    28             </div>
    29             
    30             <label for="paymentMethod">Payment method:</label>
    31             <select th:field="*{paymentMethod}" th:remove="all-but-first">
    32                 <option th:each="paymentMethod : ${paymentMethods}"
    33                         th:value="${paymentMethod}" th:text="${paymentMethod.description}">Credit card</option>
    34                 <option>Another payment method</option>
    35                 <option>Another payment method</option>
    36             </select>
    37             
    38             <label for="balance">Balance (dollars):</label>
    39             <input type="text" th:field="*{balance}" size="10" value="2500" />
    40             
    41             <input type="submit" />
    42         </form>
    43     </body>
    44 </html>
    13.内联
    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
    <title>Thymeleaf tutorial: exercise 13</title>
    <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
    <meta charset="utf-8" />
    </head>
    <body>
    <h1>Thymeleaf tutorial - Solution for exercise 13: inlining</h1>
    <h2>Birthday email</h2>
    <form action="#" method="post">
    <label for="body">Message body:</label>
    <textarea id="body" name="body" th:inline="text">
    Dear [[${customerName}]],
    it is our sincere pleasure to congratulate your in your birthday:
    Happy birthday [[${customerName}]]!!!
    See you soon, [[${customerName}]].
    Regards,
    The Thymeleaf team
    </textarea>
    <input type="submit" value="Send mail" />
    </form>
    </body>
    </html>
    

    --------------------------------------------------------------------------------------------------------------

    以上资料都来自http://itutorial.thymeleaf.org/。如果对Thymeleaf有兴趣,可以试试他们做的交互教程,很是好用。上面的html代码都是来自thymeleaf的交互教程

 

 

 

  

 

Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。

Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。

Thymeleaf的模板还可以用作工作原型,Thymeleaf会在运行期替换掉静态值。例如下面的html文件,当作为静态文件时,product name显示为Red Chair,当运行在容器中并提供product这个对象时,product name的值会自动替换为product.description对应的值。

1.bean值替换
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 2</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Answer for exercise 1: bean values</h1>
10         <h2>Product information</h2>
11         <dl>
12             <dt>Product name</dt>
13             <dd th:text="${product.description}">Red Chair</dd>
14 
15             <dt>Product price</dt>
16             <dd th:text="${product.price}">350</dd>
17 
18             <dt>Product available from</dt>
19             <dd th:text="${product.availableFrom}">2014-12-01</dd>
20         </dl>
21     </body>
22 </html>
2.简单数据转换(数字,日期)
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 2</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Answer for exercise 2: bean values</h1>
10         <h2>Product information</h2>
11         <dl>
12             <dt>Product name</dt>
13             <dd th:text="${product.description}">red Chair</dd>
14 
15             <dt>Product price</dt>
16             <dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}">180</dd>
17 
18             <dt>Product available from</dt>
19             <dd th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}">2014-12-01</dd>
20         </dl>
21     </body>
22 </html>
3.字符串拼接
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 3</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Answer for exercise 3: string concatenation</h1>
10         <h2>Product information</h2>
11         <dl>
12             <dt>Product price</dt>
13             <dd th:text="${'$'+product.price}">235</dd>
14         </dl>
15     </body>
16 </html>
4.国际化
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title th:text="#{tutorial.exercise4}">Thymeleaf tutorial: exercise 4</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1 th:text="#{tutorial.exercise4}">Thymeleaf tutorial - Solution for exercise 4: internationalization</h1>
10         <h2 th:text="#{product.info}">Product information</h2>
11         <dl>
12             <dt th:text="#{product.name}">Product name</dt>
13             <dd th:text="${product.description}">Red chair</dd>
14 
15             <dt th:text="#{product.price}">Product price</dt>
16             <dd th:text="${#numbers.formatDecimal(product.price, 1, 2)}">350</dd>
17 
18             <dt th:text="#{product.available}">Product available from</dt>
19             <dd th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}">28-Jun-2013</dd>
20         </dl>
21     </body>
22 </html>

此时html需要相应的配置文件。例如如下配置文件:

en:

tutorial.exercise4=Thymeleaf tutorial - exercise 4: internationalization
product.info=Product information
product.name=Product name
product.price=Product price
product.available=Product available from
back=Back

fr

tutorial.exercise4=Tutorial De Thymeleaf - exercice 4: l'internationalisation
product.info=Information du produit
product.name=Nom du produit
product.price=Prix du produit
product.available=Produit disponible depuis
back=Revenir
5.转义和非转义文本
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 5</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Solution for exercise 5: escaped and unescaped text</h1>
10         <div th:text="${html}">
11             Some escaped text
12         </div>
13         <div th:utext="${html}">
14             Some unescaped text
15         </div>
16     </body>
17 </html>

上述两个div分别生成的html代码为

<div>This is an <em>HTML</em> text. <b>Enjoy yourself!</b></div>
<div>This is an <em>HTML</em> text. <b>Enjoy yourself!</b></div>
6.迭代
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 6</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Answer for exercise 6: iteration</h1>
10         <h2>Product list</h2>
11         <table>
12             <thead>
13                 <tr>
14                     <th>Description</th>
15                     <th>Price</th>
16                     <th>Available from</th>
17                 </tr>
18             </thead>
19             <tbody th:remove="all-but-first">
20                 <tr th:each="product:${productList}">
21                     <td th:text="${product.description}">Red Chair</td>
22                     <td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}">$123</td>
23                     <td th:text="${#dates.format(product.availableFrom, 'yyyy-MM-dd')}">2014-12-01</td>
24                 </tr>
25                 <tr>
26                     <td>White table</td>
27                     <td>$200</td>
28                     <td>15-Jul-2013</td>
29                 </tr>
30                 <tr>
31                     <td>Reb table</td>
32                     <td>$200</td>
33                     <td>15-Jul-2013</td>
34                 </tr>
35                 <tr>
36                     <td>Blue table</td>
37                     <td>$200</td>
38                     <td>15-Jul-2013</td>
39                 </tr>
40             </tbody>
41         </table>
42     </body>
43 </html>
7.迭代统计
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 7</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Solution for exercise 7: iteration stats</h1>
10         <h2>Product list</h2>
11         <table>
12             <thead>
13                 <tr>
14                     <th>Index</th>
15                     <th>Description</th>
16                     <th>Price</th>
17                     <th>Available from</th>
18                 </tr>
19             </thead>
20             <tbody th:remove="all-but-first">
21                 <tr th:each="product : ${productList}">
22                     <td th:text="${productStat.count}">1</td>
23                     <td th:text="${product.description}">Red chair</td>
24                     <td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}">$350</td>
25                     <td th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}">28-Jun-2013</td>
26                 </tr>
27                 <tr>
28                     <td>2</td>
29                     <td>White table</td>
30                     <td>$200</td>
31                     <td>15-Jul-2013</td>
32                 </tr>
33                 <tr>
34                     <td>3</td>
35                     <td>Reb table</td>
36                     <td>$200</td>
37                     <td>15-Jul-2013</td>
38                 </tr>
39                 <tr>
40                     <td>4</td>
41                     <td>Blue table</td>
42                     <td>$200</td>
43                     <td>15-Jul-2013</td>
44                 </tr>
45             </tbody>
46         </table>
47     </body>
48 </html>
8.条件判断
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 8</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Answer for exercise 8: conditions</h1>
10         <h2>Product list</h2>
11         <table>
12             <thead>
13                 <tr>
14                     <th>Description</th>
15                     <th>Price</th>
16                     <th>Available from</th>
17                     <th></th>
18                 </tr>
19             </thead>
20             <tbody>
21                 <tr th:each="product : ${productList}">
22                     <td th:text="${product.description}">Red chair</td>
23                     <td th:text="${'$' + #numbers.formatDecimal(product.price, 1, 2)}">$350</td>
24                     <td th:text="${#dates.format(product.availableFrom, 'dd-MMM-yyyy')}">28-Jun-2013</td>
25                     <td>
26                         <span th:if="${product.price lt 100}" class="offer">Special offer!</span>
27                     </td>
28                 </tr>
29             </tbody>
30         </table>
31     </body>
32 </html>
9.更多条件判断
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 9</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Answer for exercise 9: more on conditions</h1>
10         <h2>Customer list</h2>
11         <table>
12             <thead>
13                 <tr>
14                     <th>First name</th>
15                     <th>Last name</th>
16                     <th>Gender</th>
17                     <th>Payment method</th>
18                     <th>Balance</th>
19                 </tr>
20             </thead>
21             <tbody th:remove="all-but-first">
22                 <tr th:each="customer : ${customerList}">
23                     <td th:text="${customer.firstName}">Peter</td>
24                     <td th:text="${customer.lastName}">Jackson</td>
25                     <!-- 
26                        Use th:switch for selecting content based on ${customer.gender}.
27                        As genre can be null if unknown, better use ${customer.gender?.name()}
28                        for obtaining its name.
29                     -->
30                     <td th:switch="${customer.gender?.name()}">
31                         <img th:case="'MALE'" src="../../../images/male.png" th:src="@{/images/male.png}" alt="Male" /> <!-- Use "/images/male.png" image -->
32                         <img th:case="'FEMALE'" src="../../../images/female.png" th:src="@{/images/female.png}" alt="Female" /> <!-- Use "/images/female.png" image -->
33                         <span th:case="*">Unknown</span>
34                     </td>
35                     <td>
36                         <span th:text="${customer.paymentMethod.description}">Direct debit</span>
37                         <!-- Show next message only when paymentMethod is not CREDIT_CARD -->
38                         <span th:unless="${customer.paymentMethod.name() == 'CREDIT_CARD'}" class="warn">
39                             Payment must be done in the next 4 days
40                         </span>
41                     </td>
42                     <!-- Add class="enhanced" when balance is greater than 10000 -->
43                     <td th:class="${customer.balance gt 10000} ? 'enhanced'" th:text="${customer.balance}">350</td>
44                 </tr>
45                 <tr>
46                     <td>Mary</td>
47                     <td>Johanson</td>
48                     <td><img src="../../../images/female.png" /></td>
49                     <td><span>Credit card</span></td>
50                     <td>5000</td>
51                 </tr>
52                 <tr>
53                     <td>Robert</td>
54                     <td>Allen</td>
55                     <td><img src="../../../images/male.png" /></td>
56                     <td>
57                         <span>Credit card</span>
58                         <span class="warn">Payment must be done in the next 4 days</span>
59                     </td>
60                     <td class="enhanced">50000</td>
61                 </tr>
62             </tbody>
63         </table>
64     </body>
65 </html>
10.Spring表达式语言
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 10</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Solution for exercise 10: Spring Expression language</h1>
10   
11         <h2>Arithmetic expressions</h2>
12         <p class="label">Four multiplied by minus six multiplied by minus two module seven:</p>
13         <p class="answer" th:text="${4 * -6 * -2 % 7}">123</p>
14  
15         <h2>Object navigation</h2>
16         <p class="label">Description field of paymentMethod field of the third element of customerList bean:</p>
17         <p class="answer" th:text="${customerList[2].paymentMethod.description}">Credit card</p>
18  
19         <h2>Object instantiation</h2>
20         <p class="label">Current time milliseconds:</p>
21         <p class="answer" th:text="${new java.util.Date().getTime()}">22-Jun-2013</p>
22         
23         <h2>T operator</h2>
24         <p class="label">Random number:</p>
25         <p class="answer" th:text="${T(java.lang.Math).random()}">123456</p>
26     </body>
27 </html>
11.超链接
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 11</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Answer for exercise 11: links</h1>
10         <h2>Product actions</h2>
11         <ul>
12             <li><a href="#" th:href="@{/exercise11/product.html(action='view')}">View product</a></li>
13             <li><a href="#" th:href="@{/exercise11/product.html(action='edit')}">Edit product</a></li>
14         </ul>
15     </body>
16 </html>
12.表单
 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3     <head>
 4         <title>Thymeleaf tutorial: exercise 12</title>
 5         <link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
 6         <meta charset="utf-8" />
 7     </head>
 8     <body>
 9         <h1>Thymeleaf tutorial - Solution for exercise 12: forms</h1>
10         <h2>Customer edition</h2>
11         <form action="saveCustomer.html" th:action="@{/exercise12/saveCustomer.html}" th:object="${customer}" method="post">
12             <input type="hidden" th:field="*{id}" />
13             
14             <label for="firstName">First name:</label>
15             <input type="text" th:field="*{firstName}" value="John" />
16             
17             <label for="lastName">Last name:</label>
18             <input type="text" th:field="*{lastName}" value="Wayne" />
19             
20             Genre:
21             <div th:each="gender : ${genders}" class="radio">
22                 <input type="radio" th:value="${gender}" th:field="*{gender}" />
23                 <label th:for="${#ids.prev('gender')}" th:text="${gender.description}">Male</label>
24             </div>
25             <div th:remove="all" class="radio">
26                 <input type="radio" />
27                 <label>Female</label>
28             </div>
29             
30             <label for="paymentMethod">Payment method:</label>
31             <select th:field="*{paymentMethod}" th:remove="all-but-first">
32                 <option th:each="paymentMethod : ${paymentMethods}"
33                         th:value="${paymentMethod}" th:text="${paymentMethod.description}">Credit card</option>
34                 <option>Another payment method</option>
35                 <option>Another payment method</option>
36             </select>
37             
38             <label for="balance">Balance (dollars):</label>
39             <input type="text" th:field="*{balance}" size="10" value="2500" />
40             
41             <input type="submit" />
42         </form>
43     </body>
44 </html>
13.内联
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Thymeleaf tutorial: exercise 13</title>
<link rel="stylesheet" href="../../../css/main-static.css" th:href="@{/css/main.css}" />
<meta charset="utf-8" />
</head>
<body>
<h1>Thymeleaf tutorial - Solution for exercise 13: inlining</h1>
<h2>Birthday email</h2>
<form action="#" method="post">
<label for="body">Message body:</label>
<textarea id="body" name="body" th:inline="text">
Dear [[${customerName}]],
it is our sincere pleasure to congratulate your in your birthday:
Happy birthday [[${customerName}]]!!!
See you soon, [[${customerName}]].
Regards,
The Thymeleaf team
</textarea>
<input type="submit" value="Send mail" />
</form>
</body>
</html>

--------------------------------------------------------------------------------------------------------------

以上资料都来自http://itutorial.thymeleaf.org/。如果对Thymeleaf有兴趣,可以试试他们做的交互教程,很是好用。上面的html代码都是来自thymeleaf的交互教程

posted @ 2016-08-29 10:18  王雪瑞  阅读(847)  评论(0编辑  收藏  举报