SpringBoot study notes (4) - B station power node

009- Thymeleaf template

9.1 Introduction

不使用jsp 
jsp早就过时了
使用 Thymeleaf 模版 代替jsp

insert image description hereinsert image description here

9.2 First example

insert image description hereinsert image description hereinsert image description here
insert image description hereinsert image description here
insert image description hereinsert image description here


9.3 Expressions

 表达式是在页面获取数据的一种 thymeleaf 语法。类似 ${key}

(1) Standard variable expression

语法:${key} 

作用:获取key对应的文本数据,key 是request作用域中的key,
	 使用request.setAttribute()或者model.addAttribute()都可以

在页面中的 html标签中,使用 th:text="${key}" 

insert image description here
insert image description here
insert image description hereinsert image description hereinsert image description hereinsert image description hereinsert image description here

(2) Select variable expression

星号变量表达式

语法: *{key}

作用: 获取这个key对应的数据, *{key}需要和th:object 这个属性一起使用。

目的是简单获取对象的属性值。

insert image description here
insert image description hereinsert image description hereinsert image description here
insert image description hereinsert image description here

(3) Link expression (url expression)

语法:@{链接url}
说明:主要用于链接、地址的展示,
可用于<script src="...">、<link href="...">、<a href="...">、<form action="...">、
<img src="">等,可以在 URL 路径中动态获取数据

insert image description here
insert image description here
insert image description here
insert image description hereinsert image description hereinsert image description hereinsert image description hereinsert image description hereinsert image description hereinsert image description hereinsert image description here


insert image description hereinsert image description hereinsert image description hereinsert image description hereinsert image description here

9.4 Properties

大部分属性和 html 的一样,只不过前面加了一个 th 前缀。 
加了 th 前缀的属性,是经过模版引擎处理的。

insert image description here

属性是放在html元素中的,就是html元素的属性,加入了th前缀。属性的作用不变。   
加入上th,属性的值由模板引擎处理了。在属性可以使用变量表达式。
例如:
<form action="/loginServlet" method="post"></form>

<form th:action="/loginServlet" th:method="${methodAttr}"></form>

(1) Basic attributes

insert image description hereinsert image description here


insert image description hereinsert image description here
insert image description here

insert image description hereinsert image description hereinsert image description here


insert image description hereinsert image description hereinsert image description hereinsert image description here

(2)th:each

insert image description hereinsert image description here


Loop list collection:

insert image description hereinsert image description hereinsert image description hereinsert image description hereinsert image description here

insert image description here


loop array:

insert image description here
insert image description here
insert image description hereinsert image description hereinsert image description here


Loop the List collection:

insert image description hereinsert image description hereinsert image description here

insert image description hereinsert image description here


List and map collection nesting:

insert image description hereinsert image description here

(3)th:if 和 th:unless

insert image description here

insert image description hereinsert image description hereinsert image description here
insert image description here


insert image description hereinsert image description here

(4)th:switch 和 th:case

insert image description here
insert image description here
insert image description hereinsert image description here
insert image description hereinsert image description here

(5)th:inline

insert image description here

insert image description here
insert image description hereinsert image description hereinsert image description hereinsert image description here


insert image description here
insert image description hereinsert image description here

9.5 Literals

insert image description hereinsert image description hereinsert image description here

9.6 String concatenation

insert image description here

9.7 Operators

算术运算: + , - - , * , / , %
关系比较 : > , < , >= , <= ( gt , lt , ge , le )
相等判断: == , != ( eq , ne )


<div style="margin-left: 400px">
        <h3>使用运算符</h3>
        <p th:text="${age > 10}">年龄大于 10 </p>
        <p th:text="${ 20 + 30 }">显示运算结果</p>
        <p th:if="${myuser == null}">myuser是null</p>
        <p th:if="${myuser eq null}">myuser是null</p>
        <p th:if="${myuser ne null}">myuser不是null</p>

        <p th:text="${isLogin == true ? '用户已经登录' : '用户需要登录'}"></p>
        <p th:text="${isLogin == true ? ( age > 10 ? '用户是大于10的' : '用户年龄比较小') : '用户需要登录'}"></p>

    </div>

三元运算符:
 表达式  ? true的结果 : false的结果

三元运算符可以嵌套

9.8 Basic built-in objects

模板引擎提供了一组内置的对象,这些内置的对象可以直接在模板中使用,
这些对象由#号开始引用

#request 表示 HttpServletRequest

#session 表示 HttpSession

session 是#session的简单表示方式, 用来获取session中指定的key的值

​               #session.getAttribute("loginname") == session.loginname

param 表示请求的参数集合

这些是内置对象,可以在模板文件中直接使用。

文档地址:
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#web-context-namespaces-for-requestsession-attributes-etc

insert image description here


insert image description hereinsert image description hereinsert image description hereinsert image description here


insert image description here

insert image description here


insert image description here

insert image description here


insert image description hereinsert image description here

9.9 Built-in utility objects

insert image description here

http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

insert image description here


#dates

insert image description here
insert image description hereinsert image description here
insert image description hereinsert image description here
insert image description here


#numbers

insert image description here
insert image description here


#strings

insert image description here

insert image description here


#lists

insert image description here


null handling

insert image description here
insert image description here

9.10 Content reuse (custom template)

模板是内容复用, 定义一次,在其他的模板文件中多次使用。
模板使用:

1.定义模板
	模板定义语法:
th:fragment="模板自定义名称"

例如:
<div th:fragment="head">
    <p>
        动力节点-java开发
    </p>
    <p>
        www.bjpowernode.com
    </p>
</div>
2.使用模板
1) ~{templatename :: selector}
   templatename:  文件名称
   selector: 自定义模板名称
2)templatename :: selector
   templatename:  文件名称
   selector: 自定义模板名称

对于使用模板:有包含模板(th:include), 插入模板(th:insert)

insert image description here


insert image description hereinsert image description here
insert image description here
insert image description here
insert image description hereinsert image description here
insert image description hereinsert image description here


insert image description here
insert image description hereinsert image description here


insert image description here
insert image description here
insert image description hereinsert image description here


insert image description hereinsert image description here

010- Summary

Spring + SpringMVC + SpringBoot

创建对象的:
@Controller: 放在类的上面,创建控制器对象,注入到容器中
@RestController: 放在类的上面,创建控制器对象,注入到容器中。
             作用:是一个复合注解,包括@Controller@ResponseBody,
             使用这个注解的类里面的控制器方法的返回值都是数据

@Service : 放在业务层的实现类上面,创建service对象,注入到容器
@Repository : 放在dao层的实现类上面,创建dao对象,放入到容器。 
			  没有使用这个注解,是因为现在使用MyBatis框架,
			  dao对象是MyBatis通过代理生成的,不需要使用@Repository,所以没有使用。
			  
@Component:  放在类的上面,创建此类的对象,放入到容器中。 


赋值的:
@Value : 简单类型的赋值
		  例如 在属性的上面使用
		  	@Value("李四") 
		  	private String name
          还可以使用@Value,获取配置文件者的数据(properties或yml)。 
          	@Value("${server.port}") 
          	private Integer port

@Autowired: 引用类型赋值自动注入的,支持byName, byType. 默认是byType 。 
			放在属性的上面,也可以放在构造方法的上面。 
			推荐是放在构造方法的上面
			
@Qualifer:  给引用类型赋值,使用byName方式。   
            @Autowird, @Qualifer都是Spring框架提供的。

@Resource : 来自jdk中的定义, javax.annotation。 
			 实现引用类型的自动注入, 支持byName, byType.
             默认是byName, 如果byName失败, 再使用byType注入。在属性上面使用


其他:
@Configuration : 放在类的上面,表示这是个配置类,相当于xml配置文件

@Bean:放在方法的上面, 把方法的返回值对象,注入到spring容器中。

@ImportResource : 加载其他的xml配置文件, 把文件中的对象注入到spring容器中

@PropertySource : 读取其他的properties属性配置文件

@ComponentScan: 扫描器 ,指定包名,扫描注解的

@ResponseBody: 放在方法的上面,表示方法的返回值是数据, 不是视图
@RequestBody : 把请求体中的数据,读取出来, 转为java对象使用。

@ControllerAdvice:  控制器增强, 放在类的上面, 表示此类提供了方法,可以对controller增强功能。

@ExceptionHandler : 处理异常的,放在方法的上面

@Transcational :  处理事务的, 放在service实现类的public方法上面, 表示此方法有事务



SpringBoot中使用的注解
    
@SpringBootApplication : 放在启动类上面,是复合注解,包含了
						  @SpringBootConfiguration
                          @EnableAutoConfiguration
                          @ComponentScan


    
MyBatis相关的注解

@Mapper : 放在接口的上面,让MyBatis找到接口, 创建他的代理对象    
@MapperScan :放在主类的上面 , 指定扫描的包, 把这个包中的所有接口都创建代理对象。 对象注入到容器中
@Param : 放在dao接口的方法的形参前面, 作为命名参数使用的。
    
    
Dubbo注解
@DubboService: 在提供者端使用的,暴露服务的, 放在接口的实现类上面
@DubboReference:  在消费者端使用的, 引用远程服务, 放在属性上面使用。
@EnableDubbo : 放在主类上面, 表示当前引用启用Dubbo功能。

Quote template syntax:

1) ~{templatename :: selector}
   templatename:  文件名称
   selector: 自定义模板名称
2)templatename :: selector
   templatename:  文件名称
   selector: 自定义模板名称

对于使用模板:有包含模板(th:include), 插入模板(th:insert)

Guess you like

Origin blog.csdn.net/m0_52041525/article/details/125897920
Recommended