一.使用YML文件配置多套环境
   
 
application.yml 
spring:
  profiles:
    #active指向其他配置文件======此处引用(application-test.properties)
    active: test
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///invoicingsystem
    username: root
    password: 123
application-test.properties
#映射级别
mybatis.configuration.auto-mapping-behavior=full
 
 
#包别名
mybatis.type-aliases-package=com.invoicing.project.entity
 
 
#取消使用缓存
spring.thymeleaf.cache=false
 
 
#端口号
server.port=7070
 
如需配置多套运行环境,添加配置文件的同时,切换yml文件profiles-active引用的文件即可
 
文件中可以配置不同的端口号和其他配置,在properties或者yml文件都可以配置
 
二. thymeleaf的介绍与配置
 
简单介绍:
Thymeleaf 与JSP类似,最大的区别在于,JSP在运行之后才能得纯HTML,而 Thymeleaf 在运行之前也是纯html。Thymeleaf跟 Velocity、FreeMarker 等模板引擎大同小异 ,相较与其他的模板引擎,它有如下三个极吸引人的特点:
 
1.Thymeleaf 在有网络和无网络的环境下皆可运行。它可以让在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
 
2.Thymeleaf 开箱即用。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
 
3.Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
 
配置:
1、这里使用maven来管理项目,首先在pom文件中引入相关依赖。
        
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring4</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
 
 
2、配置属性
 
其实完全可以直接使用,不用配置。但是Spring Boot官方文档建议在开发时将缓存关闭,那就在application.properties文件中加入下面这行就行了:
 
spring.thymeleaf.cache=false
 
小例子:
 
 
标签中的th:text属性用来填充该标签的内容,也就是说在上面的例子中<span>标签中的值将会被th:text属性中${session.uesr.userName}的值替换。假如${session.uesr.userName}的值是Hello Thymeleaf!那么网页打开时显示的内容将会变成Hello Thymeleaf!。
 
在传统的JSP中,我们需要在<span>标签中加入${session.uesr.userName}才能让浏览器显示数据,每次开发前端页面我们必须部署项目启动服务器之后才能显示数据,从而根据显示的数据进行美化或者修改前端的页面。使用Thymeleaf 模板引擎之后,不需要部署项目,只要在前端设置模板数据用于查看显示效果就可以了,在标签中加入th:text属性之后,项目部署时前端设置的模板数据就会被后端的数据(通常是数据库中的数据)替换,这样开发的时候就可以专注于前端或者专注于后端,大大提高我们的开发效率,如今的是趋势前后端开发分离,使用Thymeleaf 模板引擎能减少团队之间因前后端开发差异产生的问题。
 
Thymeleaf的标准表达式语法
 
Thymeleaf有四种标准表达式语法
 
    变量表达式
    URL表达式
    选择(星号)表达式
    文字国际化表达式
 
在这里着重介绍前面两种
1. 变量表达式
 
变量表达式即OGNL表达式或Spring EL表达式(在Spring术语中也叫model attributes)。像这种:${user.name}
 
<p>UserName is :  <span th:text="${user.name}">xiaoming</span> !</p>
 
默认运行结果是:UserName is : xiaoming ! 如果${user.name}的值是xiaohong则输出UserName is : xiaohong !
这种与JSP的方式一样
 
2. URL表达式
 
Thymeleaf对于URL的处理是通过语法@{…}来处理,举个简单的例子:
 
<a th:href="@{http://www.baidu.com}">Thymeleaf</a>
 
Thymeleaf支持绝对路径URL也支持相对路径的URL:
相对路径写法:
@{…/thymeleaf/hello(userName=${user.username})}
添加参数:
 
@{/thymeleaf/hello(userName=${user.username},userPassWord=${user.userpassword})}
 
URL后面的(userName=${user.username},userPassWord=${user.userpassword})表示将括号内的内容作为参数处理,多个参数用逗号隔开,该语法避免使用字符串拼接,大大提高了可读性
 
如果要对URL进行修改,可以使用 th:href和th:src
 
<!-- 访问的地址是 'http://localhost:8080/thymeleaf/hello?userName=xiaoming)'  -->
<a href="hello.html"
   th:href="@{http://localhost:8080/thymeleaf/hello(userName=${user.username})}">view</a>
 
 
<a href="hello.html" th:href="@{/thymeleaf/hello(userName=${user.username})}">view</a>
 
3.1算术运算
 
表达式支持算数运算,比如:+、-(减号)、*、/、%以及单独的 -(负号)
简单举两个例子
语法     实例     运行结果
+     <p th:text="${Product.price+999}" ></p>     1000(设Product.price为1)
-     <p th:text="${Product.price-999}" ></p>     1(设Product.price为1000)
3.2 逻辑运算
 
逻辑运算符>, <, <=,>=,==,!=,!都可以使用,唯一需要注意的是使用<,>时需要用它的HTML转义符
3.3 条件运算
 
If-then: (if) ? (then)
 
 
If-then-else: (if) ? (then) : (else)
 
 
Default: (value) ?: (defaultvalue)
 
 
Thymeleaf常用标签
关键字     操作     例子
th:id     替换id     <input th:id="'xxx' + ${collect.id}"/>
th:text     文本替换     <p th:text="${collect.description}">description</p>
th:utext     支持html的文本替换     <p th:utext="${htmlcontent}">conten</p>
th:object     替换对象     <div th:object="${session.user}">
th:value     属性赋值     <input th:value="${user.name}" />
th:with     变量赋值运算     <div th:with="isEven=${prodStat.count}%2==0"></div>
th:style     设置样式     th:style="'display:' + @{(${sitrue} ? 'none' : 'inline-block')} + ''"
th:onclick     点击事件     th:"'getCollect()'"
th:each     属性赋值     tr th:each="user,userStat:${users}"
th:if     判断条件     <a th:if="${userId == collect.userId}" >
th:unless     和th:if判断相反     <a th:href="@{/login}" th:unless=${session.user != null}>Login</a>
th:href     链接地址     <a th:href="@{/login}" th:unless=${session.user != null}>Login</a>
th:switch     多路选择 配合th:case 使用     <div th:switch="${user.role}">
th:case     th:switch的一个分支     <p th:case="'admin'">User is an administrator</p>
th:fragment     布局标签,定义一个代码片段,方便其它地方引用     <div th:fragment="alert">
th:include     布局标签,替换内容到引入的文件     <head th:include="layout :: htmlhead" th:with="title='xx'"></head>
th:replace     布局标签,替换整个标签到引入的文件     <div th:replace="fragments/header :: title"></div>
th:selected     selected选择框 选中     th:selected="(${xxx.id} == ${configObj.dd})"
th:src     图片类地址引入     <img class="img-responsive" alt="App Logo" th:src="@{/img/logo.png}" />
th:inline     定义js脚本可以使用变量     <script type="text/javascript" th:inline="javascript">
th:action     表单提交的地址     <form action="subscribe.html" th:action="@{/subscribe}">
th:remove     删除某个属性     <tr th:remove="all"> 1.all:删除包含标签和所有的孩子。’2.body:不包含标记删除,但删除其所有的孩子。3.tag:包含标记的删除,但不删除它的孩子。4.all-but-first:删除所有包含标签的孩子,除了第一个。5.none:什么也不做。这个值是有用的动态评估。
th:attr     设置标签属性,多个属性可以用逗号分隔     比如 th:attr="src=@{/image/aa.jpg},title=#{logo}",此标签不太优雅,一般用的比较少。

Spring Boot的Web配置的更多相关文章

  1. Spring Boot 2.X(四):Spring Boot 自定义 Web MVC 配置

    0.准备 Spring Boot 不仅提供了相当简单使用的自动配置功能,而且开放了非常自由灵活的配置类.Spring MVC 为我们提供了 WebMvcConfigurationSupport 类和一 ...

  2. 使用Spring Boot开发Web项目(二)之添加HTTPS支持

    上篇博客使用Spring Boot开发Web项目我们简单介绍了使用如何使用Spring Boot创建一个使用了Thymeleaf模板引擎的Web项目,当然这还远远不够.今天我们再来看看如何给我们的We ...

  3. 使用Spring Boot开发Web项目

    前面两篇博客中我们简单介绍了Spring Boot项目的创建.并且也带小伙伴们来DIY了一个Spring Boot自动配置功能,那么这些东西说到底最终还是要回归到Web上才能体现出它的更大的价值,so ...

  4. Spring Boot 2.0 配置图文教程

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...

  5. Spring Boot SSL [https]配置例子

    前言 本文主要介绍Spring Boot HTTPS相关配置,基于自签证书实现: 通过本例子,同样可以了解创建SSL数字证书的过程: 本文概述 Spring boot HTTPS 配置 server. ...

  6. 01 Spring Boot 的简单配置和使用

    Spring Boot 简介 使用 Spring Boot 可以让我们快速创建一个基于 Spring 的项目,而让这个 Spring 项目跑起来我们只需要很少的配置就可以了. 创建 Spring Bo ...

  7. Spring Boot 全局异常配置

    Spring Boot 全局异常配置,处理异常控制器需要和发生异常的方法在一个类中.使用 ControllerAdvice 注解 package com.li.controller; import o ...

  8. 【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

    贼烦的是,使用spring boot 创建web项目,然后我再idea下创建的,but 仅仅启动spring boot的启动类,就算整个项目都是好着的,就算是能够进入controller中,也不能成功 ...

  9. 通过docker-composer启动容器nginx,并完成spring.boot的web站点端口转发

    前面已经讲过2篇基于docker的mysql.redis容器编排并启动.这次将练习下nginx的docker方式的部署,以及通过nginx去代理宿主主机上的Web服务应该怎么配 PS:(这里由于ngi ...

随机推荐

  1. JAVA 增删改查接口命名规范(dao层与 service 层

    开发时,有很多规范,这里写的是命名规范. Dao 接口命名   insert batchInsert selectOne selectById count selectList update dele ...

  2. 全文检索以及Lucene的应用

    全文检索 一.什么是全文检索? 就是在检索数据,数据的分类: 在计算机当中,比如说存在磁盘的文本文档,HTML页面,Word文档等等...... 1.结构化数据 格式固定,长度固定,数据类型固定等等, ...

  3. \n不换行

    \n在js中表示换行,<br/>在html中表示换行,所以如果在设置innerHtml值时使用  \n  ,那么在页面上并不会显示换行,而在设置innerText值时使用  \n  就会显 ...

  4. 《HTML&CSS design and build websites》学习笔记(1)

    Chapter 1: Structure Chapter 2: Text <head>表示标题,默认显示在第一行. <title>表示抬头,显示在浏览器的标签页,还有窗口栏. ...

  5. P3945 | 三体问题 (天体物理+计算几何)

    最近终于把<三体Ⅰ·地球往事>和<三体Ⅱ·黑暗森林>看完了! 为了快点认识题目中的歌者文明,已经开始第三部了! 题目背景 @FirstLight0521 出题人在这里哦~ 三体 ...

  6. Geographic coordinate systems 坐标系和 wkid

    Well-Known ID 与对应的坐标系  地理坐标系 Well-known ID Name Well-known text 3819 GCS_HD1909 GEOGCS["GCS_HD1 ...

  7. 通过CSS3属性值的变化实现动画效果+触发这些动画产生交互

    css3过渡 transition 兼容性:IE10+ transition: none | all | property 默认为none all 表示所有属性过渡 property 指定属性值,如c ...

  8. Android实战项目——家庭记账本设计思路

    经过三周左右的Android学习,实感只有上手开发才能有所提高.在此打算做一个家庭记账APP,同时巩固一下学到的东西并且弥补漏洞. 概述 记账是自古以来人类必不可少的一件事,从古代的算盘,到手写账本, ...

  9. maven的核心概念——聚合

    第十六章聚合 16.1 为什么要使用聚合 将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效.修改源码后也需要逐个手动进行clean操作.而使用了聚合之后就可以批量进行Maven工程的安装 ...

  10. Python2与Python3比较

    1.print 函数 1. print语句没有了,取而代之的是print()函数. Python 2.6与Python 2.7部分地支持这种形式的print语法. 2.Unicode 1.  在pyt ...