火币网站怎么做空,wordpress page 2,网络规划设计师考试全程指导,公司网站自己可以学习优化吗Thymeleaf
模板引擎 前端交给我们的页面#xff0c;是html页面。如果是我们以前开发#xff0c;我们需要把他们转成jsp页面#xff0c;jsp好处就是当我们查出一些数据转发到JSP页面以后#xff0c;我们可以用jsp轻松实现数据的显示#xff0c;及交互等。 jsp支持非常强大…Thymeleaf
模板引擎 前端交给我们的页面是html页面。如果是我们以前开发我们需要把他们转成jsp页面jsp好处就是当我们查出一些数据转发到JSP页面以后我们可以用jsp轻松实现数据的显示及交互等。 jsp支持非常强大的功能包括能写Java代码但是呢我们现在的这种情况SpringBoot这个项目首先是以jar的方式不是war像第二我们用的还是嵌入式的Tomcat所以呢他现在默认是不支持jsp的。 那不支持jsp如果我们直接用纯静态页面的方式那给我们开发会带来非常大的麻烦那怎么办呢
SpringBoot推荐你可以来使用模板引擎
模板引擎我们其实大家听到很多其实jsp就是一个模板引擎还有用的比较多的freemarker包括SpringBoot给我们推荐的Thymeleaf模板引擎有非常多但再多的模板引擎他们的思想都是一样的什么样一个思想呢我们来看一下这张图 模板引擎的作用就是我们来写一个页面模板比如有些值呢是动态的我们写一些表达式。而这些值从哪来呢就是我们在后台封装一些数据。然后把这个模板和这个数据交给我们模板引擎模板引擎按照我们这个数据帮你把这表达式解析、填充到我们指定的位置然后把这个数据最终生成一个我们想要的内容给我们写出去这就是我们这个模板引擎不管是jsp还是其他模板引擎都是这个思想。只不过呢就是说不同模板引擎之间他们可能这个语法有点不一样。其他的我就不介绍了我主要来介绍一下SpringBoot给我们推荐的Thymeleaf模板引擎这模板引擎呢是一个高级语言的模板引擎他的这个语法更简单。而且呢功能更强大。
引入Thymeleaf
怎么引入呢对于springboot来说什么事情不都是一个start的事情嘛我们去在项目中引入一下。给大家三个网址 Thymeleaf 官网https://www.thymeleaf.org/ Thymeleaf 在Github 的主页https://github.com/thymeleaf/thymeleaf Spring官方文档找到我们对应的版本https://docs.spring.io/spring-boot/docs/2.6.5/reference/htmlsingle/#using-boot-starter
找到对应的pom依赖可以适当点进源码看下本来的包
!--thymeleaf--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId
/dependencyThymeleaf分析
前面呢我们已经引入了Thymeleaf那这个要怎么使用呢
我们首先得按照SpringBoot的自动配置原理看一下我们这个Thymeleaf的自动配置规则在按照那个规则我们进行使用。
我们去找一下Thymeleaf的自动配置类ThymeleafProperties
ConfigurationProperties(prefix spring.thymeleaf
)
public class ThymeleafProperties {private static final Charset DEFAULT_ENCODING;public static final String DEFAULT_PREFIX classpath:/templates/;public static final String DEFAULT_SUFFIX .html;private boolean checkTemplate true;private boolean checkTemplateLocation true;private String prefix classpath:/templates/;private String suffix .html;private String mode HTML;private Charset encoding;
}我们可以在其中看到默认的前缀和后缀 我们只需要把我们的html页面放在类路径下的templates下thymeleaf就可以帮我们自动渲染了。 使用thymeleaf什么都不需要配置只需要将他放在指定的文件夹下即可 测试 编写一个TestController Controller
public class TestController {RequestMapping(/test)public String test1(){//classpath:/templates/test.htmlreturn test;}}编写一个测试页面 test.html 放在 templates 目录下 !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
h1Test页面/h1
/body
/html启动项目请求测试 Thymeleaf 语法学习
要学习语法还是参考官网文档最为准确我们找到对应的版本看一下
Thymeleaf 官网https://www.thymeleaf.org/ 简单看一下官网我们去下载Thymeleaf的官方文档在线文档https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
Thymeleaf入门
我们做个最简单的练习 我们需要查出一些数据在页面中展示 修改测试请求增加数据传输 RequestMapping(/t1)
public String test1(Model model){//存入数据model.addAttribute(msg,Hello,Thymeleaf);//classpath:/templates/test.htmlreturn test;
}我们要使用thymeleaf需要在html文件中导入命名空间的约束方便提示。 我们可以去官方文档中看一下命名空间拿来过来 xmlns:thhttp://www.thymeleaf.org我们去编写下前端页面 !DOCTYPE html
html langen xmlns:thhttp://www.thymeleaf.org
headmeta charsetUTF-8title测试/title
/head
body
h1测试页面/h1!--th:text就是将div中的内容设置为它指定的值和之前学习的Vue一样--
div th:text${msg}/div
/body
/html启动测试
Thymeleaf语法
1、我们可以使用任意的 th:attr 来替换Html中原生属性的值
2、我们能写哪些表达式呢
Simple expressions:表达式语法
Variable Expressions: ${...}获取变量值OGNL1、获取对象的属性、调用方法2、使用内置的基本对象#18#ctx : the context object.#vars: the context variables.#locale : the context locale.#request : (only in Web Contexts) the HttpServletRequest object.#response : (only in Web Contexts) the HttpServletResponse object.#session : (only in Web Contexts) the HttpSession object.#servletContext : (only in Web Contexts) the ServletContext object.3、内置的一些工具对象#execInfo : information about the template being processed.#uris : methods for escaping parts of URLs/URIs#conversions : methods for executing the configured conversion service (if any).#dates : methods for java.util.Date objects: formatting, component extraction, etc.#calendars : analogous to #dates , but for java.util.Calendar objects.#numbers : methods for formatting numeric objects.#strings : methods for String objects: contains, startsWith, prepending/appending, etc.#objects : methods for objects in general.#bools : methods for boolean evaluation.#arrays : methods for arrays.#lists : methods for lists.#sets : methods for sets.#maps : methods for maps.#aggregates : methods for creating aggregates on arrays or collections.
Selection Variable Expressions: *{...}选择表达式和${}在功能上是一样Message Expressions: #{...}获取国际化内容Link URL Expressions: {...}定义URLFragment Expressions: ~{...}片段引用表达式Literals字面量Text literals: one text , Another one! ,…Number literals: 0 , 34 , 3.0 , 12.3 ,…Boolean literals: true , falseNull literal: nullLiteral tokens: one , sometext , main ,…Text operations:文本操作String concatenation: Literal substitutions: |The name is ${name}|Arithmetic operations:数学运算Binary operators: , - , * , / , %Minus sign (unary operator): -Boolean operations:布尔运算Binary operators: and , orBoolean negation (unary operator): ! , notComparisons and equality:比较运算Comparators: , , , ( gt , lt , ge , le )Equality operators: , ! ( eq , ne )Conditional operators:条件运算三元运算符If-then: (if) ? (then)If-then-else: (if) ? (then) : (else)Default: (value) ?: (defaultvalue)Special tokens:No-Operation: _练习测试
1、 我们编写一个Controller放一些数据 RequestMapping(/test2)
public String test2(MapString,Object map){//存入数据map.put(msg,h1Hello/h1);map.put(users, Arrays.asList(qinjiang,kuangshen));//classpath:/templates/test.htmlreturn test;
}2、测试页面取出数据
!DOCTYPE html
html langen xmlns:thhttp://www.thymeleaf.org
headmeta charsetUTF-8titleTitle/title
/head
body
divh1Test页面/h1!--不转义--div th:text${msg}/div!--转义--div th:utext${msg}/divhr!--遍历数据--!--th:each每次遍历都会生成当前这个标签官网#9--h3 th:eachuser:${users} th:text${user}/h3hr!--行内写法官网#12--h3 th:eachuser:${users}[[ ${user} ]]/h3
/div
/body
/html3、启动项目测试 我们看完语法很多样式我们即使现在学习了也会忘记所以我们在学习过程中需要使用什么根据官方文档来查询才是最重要的要熟练使用官方文档