00:00
好,前面呢,引入了life,那这个要怎么使用呢?我们首先啊,得按照spring BOO的自动配置原理,看一下我们这个life的自动配置规则,我们得按照那个规则我们来用起来,好在这个自动配置呢,在这个扩展包,好这有一个auto自动配置,诶你看啊,专门有一个叫SIM life这个里边你看啊,Life的自动配置就是这个自动配置啊,我们都可以不用看了,它无非就是给里边添一些组件,比如我们这个,诶这有LIFE2的啊,我们二不生效,你看它好多判断不生效,而这是LIFE3的,来填一下我们默认的这个什么模板解析器的组件,包括呢,帮我们来填什么视图解析器来填组件,主要呢,我们要通过他填的这些看一下默认规则,其实默认规则都在这个similar life里边封装着,来看什么默认规则呢?来看啊,我把这个默认规则拿来照着它。
01:00
直接用起来了。好往下找,首先这个默认规则呢,有一个默认的前缀啊,Class pluss,还有默认的后缀HTM,其实这句话前后缀,这就是我们这个spring mvc里边视图解析的这个专用词是吧,然后呢,也就是通过它我们就知道,只要我们把咱们这个HTM页面。页面放在放在哪里呀?放在我们这个类路径下的templ里边,然后呢,我们这个就能帮我们自动渲染了,就能咱们这自动渲染了,那么我们来就直接来看一下,比如我来写一个请求。好,我们在这个controller里边呢,来写一个public,我要success,哎,比如呢,我们要去一个成功页面return success,如果我们以前这个successcs等,现在我们引入了引擎,比如呢,我们发success请求,然后呢,我们要去success页面,把这个页面在哪啊,我们说S默认给你在这儿拼,相当于给在类路径下的template文件夹里边,诶给你找到这个success什么呢?哎,还得拼一个后缀叫HTMMR呢,为了能达到目的地,我呢就直接给这来写一个STM,来看一下是不是就直接运行起来了呢,成功,OK,我点一个运行。
02:45
来发送这个success请求,看一下我们这个模板引擎是不是来到success页面。好,我来local host8080,我叫CIRC回车,诶,我们发现,哎,确实来到成功页面了,这个页面呢,是我们这个life帮我们来解析的,说life要用起来就一句话,哎,我们根本不用,什么都不用配,只需要呢,把我们的HTM页面放在类路径下,让life自动渲染,那有了life以后能用什么呢?当然就能用它啊,非常高大上的语法了,我们来看啊,Life的语法呢,我还是来参照它的官方文档,SIM life好点进来,哎,我们来看它这呢有3.09版本和咱们这个216版本能同时使用,这儿呢也有对SIM life的简单介绍啊,他说这是一个现代化的Java服务端的模板引擎,然后呢,它的特点呢,是咱们这个自然的模板语言呢,我们这一块的写法呢,就比较像HTM的。
03:53
语法格式我们呢主要来看它的这个文档,文档里边呢,往下翻这3.0,哎这直接有PDF,那推荐大家就直接右键啊链接另存为把我们这个PDF保存起来,我呢这个桌面上呢,已经把这个PDF我保存了,把它打开,我就照着这个引导使用,接下来呢,就体会一下life的使用,我们就以一个最常用的场景,比如我们要发success请求来到这个页面,我们要查出一些数据在页面展示,查出一些数据在页面展示,哎,如果是我们这个哎,JSP页面,那就简单多了,比如我可以放一些数据map。
04:41
String object,我写一个map,好,我们呢就给里边我来放一个put,叫hello值呢,我们就叫你好,哎,默认呢,这个数据会被放在我们请求域中,我想要来success页面取值,怎么取啊,好,如果是我们以前GSP do福大克号直接来取哈,是不是就完事了,但是现在呢,不是GSP,我们要按照life的语法来,它语法是什么呢?你就得来说一下,首先我们要用life,你得在我们这个HTM上导一个的名称空间,我们在随便来一张,哎,它这示例片段里边,我们来把这个复制来,当然你也可以不导,不导的话呢,咱们s life的就没语法提示了,导它的作用就是为了语法提示,这是我们使用的第一步。
05:34
来放在这儿,好,第一步我们来导入咱们这个SIM life。的名称空间。好,我们把这段代码呢来放进来,然后呢,接下来第二步我们就可以使用的语法了。Life语法啊,那么怎么使用呢?我们来看啊,假设呢,我这有一个div。
06:06
Div,我想在这个div里边取出我们这个hello的值,哎,我们不能在这写到了负大括号,这不是它的语法,我来写什么呢?看好啊,Div里边呢,我来空格,这有一些提示,比如叫THTH冒号加一个前缀,然后呢叫test,那么test的意思,那就是文本内容PH test它的作用它就是呢,哎,将div里边的文本内容,将div里边的文本内容设置为设置,为什么呢?设置为我们指定的值,怎么指定呢?那就Dollar大括号,哎,这算又是熟悉的,我来写一个哈,好,这一块呢,默认有一个报错,这都是我们这个idea的事,我们就不用管了,我来直接启动。
07:00
来访问一下这个hello请求,看能不能把哈取出来呢?好,我们来访问一下local卡,8080SUCCESS请求success回车,哎,我们发现成功,你好,也取出来了,而且啊,这样取值也是有很大好处的,比如我们给大家来看一下,假设呢,Div里边本来有内容,比如我们前端给我们写的,这是显示欢迎信息,然后呢,如果说这个页面不经过模板引擎解析,我们来直接访问,我复制出来,我直接访问,你看啊,这块显示的是前端自己写的数据,而如果经过了模板引擎解析访问,把它的数据就替换成我们后台的数据,所以这个前后端分工合作起来就更好用了。那接下来啊,我们就来详细看一下life的语法规则,那我们把我们以前的这个使用好,我来复制来,我先放在这儿。
08:03
Life的语法规则是什么样呢?我们在这儿说,哎,第三块。啊,语法规则,这语法规则要说的首先就是第一个我们见到的th test,这个th test呢,我们之前说,哎,它是来改变我们当前元素里边的文本内容的,但是我们要根据这个ts test,我来说第一个规则我们要用,我们可以用TH任意属性,任意HTML属性,这是什么意思啊,你看啊,由于前端给我们给的页面啊,可能它好多东西都有默认值,比如这个div,它还有ID,哎,它有ID,它有它的默认ID,比如呢叫DIV01,它还能有它默认的class,比如呢,我们就叫my div,而这些值呢,我们想改怎么改呢?哎,我都可以直接用TH冒号ID的方式。
09:09
如果我们能取出一个值,比如我Dollar符大号,我还写hello吧,然后呢,PH class的方式,哎,我都能改掉它的值。到了福大括号写一个哈来这就是呢,我们使用TH任意属性来替换原生属性的值,任意属性来替换原生属性的值,我们来可以给大家看一下,我我们呢,把这个重新启动。我来在这儿呢,来访问一下咱们这个success页面回车。我们看一下它的右键查看源代码,你看啊,ID class都是我们替换来的值,当然如果你要把这个拿来直接以静态页面的方式你来看,那这个ID class,那就是这样,所以说呢,我们可以有PH任意属性,那我们这个TH语法到底有多少呢?我们可以参照一下官方文档,在官方文档的第十章有一个叫属性的优先级啊,T tribute pre这里边呢,诶列举了我们这些属性,包括哪个属性是先解析,哪个是后解析,哎,我们可以把它截一个图。
10:25
把它截一个图,那们正好呢来看一下这些属属性,来说一下每一个都是怎么用的,包括呢,我们跟GSP也可以来类比一下,第一个叫fragmentclusion,也就说呢,我们这个片段包含来做片段包含操作的,它有两个,一个是插入了替换,这就类似于我们GSP里边的JSP include标签一样,哎,我们抽取公共的片段可以来包含进来,这是第一个,然后呢,第二个我们来看叫fragment inter,哎,Inter这个呢,是我们来做什么的呢?便历的,哎就是这就是我们来做便历的,这个便历类似于我们,哎,TP里边用的c for啊,Each就是这个,然后呢,包括这还有t if unless Switch case,这是不是来做哎判断的,哎,那么这是来做条件判断的。
11:23
这个条件判断呢,那就类似于我们以前用的C等等等,这还有一个叫来做变量声明的,声明变量的,这个就类似于我们以前用的c set标签一样,我们可以来设置一些变量,但没用过的同学啊,你听一听就行了,然后呢,还有一个叫attribute Mo fashion啊,这个呢就是来做我们这个属性修改的。啊,我们这个属性修改,这个属性修改啊,你看啊,它这叫THTR,还能at tr preend openend,这是来做任意属性修改的,而且呢,它我们以前来做属性修改啊,都是来替换值的,但是这一块呢,还能帮你干嘛,Preendend,也就说呢,支持支持咱们这个pre,也就说呢,给他前边添加和end,给他后边来加内容的支持这些功能的,然后呢,还有一个这个叫specific attribute Mo,这就是来修改我们指定属性的,你看啊,这就是我们说的PH,任意属性能指修改它默认的值,修改怎么指定属性默认值的。
12:43
然后呢,还有我们用的g test,哎,这个就是来修改修改什么,你看这叫标签体里边文本内容的,修改标签内容的。修改标签体内容的这呢,有一个叫th test,还有一个叫thn test u test u test呢,一个就是一个是呢,它是不转,不转特殊字符。
13:14
那这样的话呢,比如我们这个文本里边我写了一个一标签,那我们看到的效果就是一个大标题,但是呢,上边这个task它是转的,那相同的,如果我们写了一个HTM2片段,用TH显示出来,那这个片段呢就被当成普通字符串了,还会给你在页面打印H1等等,但是呢,不会显示出我们这个标题效果转移特殊字符。还有我们这个叫包含进来,哎,我们呢就在这要声明一下,包括呢,这还有移除的,那我们后来再说就行了,那这就是我们这个TH的整个语法,我呢把它来保存到我们这个笔记里边。
14:08
笔记里边好。保存,这就是呢,我们这个TH的语法,我们呢,一会儿来也用一下。Images。Images下边的他A,但是呢,我们再来看啊,在TH里边呢,我们需要写一些表达式啦之类的东西,那这些表达式能写什么?这就是我们要说的第二个语法规则,比如说我们这个life里边,你能写这些TH来做功能标签,就跟我们能写c each,但是要怎么我们c each里边也要取值呢?我们能写哪些表?能写哪些表达式,我们官方文档里边呢,也有说这有一个叫标准的表达式语法,然后呢,它这下边有一个,诶有非常多的表达式语法,这有一个,哎给你来做一个简单的总结,有这么多,哎,我们来拿来。
15:07
也就说我们这个呢,支持这么多的表达式语法。好,我们呢,就用properties的方式,它粘过来,好,然后呢,这些表达式语法,我们来看一下properties。好,我们来看一下啊,首先呢,哎,我们来看这几个,比如说我们能写哪些表达式,能写Dollar大括号,星号大括号,井号大号,特大括号,还有咱们这个啊,波浪线大括号,这都是什么意思?哎,我们几个表达式语法。表达式语法,哎,我们这几个第一个Dollar大括号,哎,我们之前呢,用来是获取咱们这个变量值的,每一个怎么用呢?这五个表达式啊特别重要,每一个呢,我们来参照文档来看一下,还是咱们这个标的准的表达式语法展开这有一个变量Dollar了,大括号呢,是用来获取值,哎,它呢其实在底层就是OGNL表达式说呢,它其实是OGN,既然是OG,那各种高大上的功能来往下看能怎么用呢?下面都有各种例子,比如呢,我们可以调用对象的属性,用起点属性的方式,包括呢,对象调属性的时候啊,我们也可以这么来获取,这是每一个属性的属于名,包括如果说这个属啊啊,我们从map步中假设呢,从map步中获取的这个K,这个K呢,中间有空格,我们也可以这么来写啊,数组中获取包括甚至我们还能干嘛?
16:44
是不是进行方法调用啊,包括我们方法还能给他传一个参数,哎,我们都能加一个参数,这就是我们这个O进的表达式,然后不仅能调属性。哎,它的高级特性我写在这儿,获取对象的属性,哎,这是最基本的功能,然后呢,它还能调用方法,调用方法,那么接下来呢,它还有一些功能,下边翻这还有一个expression basic object,我们这个表达式里边,你看啊,还能写井号,什么点这个井号呢,是它的一些内置的基本对象,还能用一些。
17:22
哎,使用内置的基本对象,这个内置的这些对象都是什么呢?哎,我们可以来看一下,一个叫ctx,就是我们这个当前上下对象和当前上下里边的这个变量,包括代表区域信息的,还有如果是环境有,我们request有这几个也复制。要说呢,它能使用咱们这几个内置对象。内置对象。包括呢,我们继续来看它还能用什么呢。
18:01
包括这个内置对象要怎么用啊,哎,这一块也有文档,大家可以点进去,哎,这给个示例,比如我们要用咱们这个国家的这个区域信息,它是哪个国家,我们区域信息的国家代号,我们就能打印出来,这么来用,然后呢,它的这个使用附录,哎都在这儿点一下,诶比如呢,我们获取请求参数中它的值,哎,我们就可以p for或者p size,我们可以知道请求参数中啊有多少的咱们这个呃参数包括呢,还请求参数是不是为空等等一大堆,还有我们从session中获取值啊还有这么一些,我来就举一个例子,哎,他们呢,这儿还有一些例子,例子呢都在附录里边,哎,都在附录里边,大家就可以来用,我们来再来看它第三个,哎,变量除果能用这个基本对象外,它还能用一些工具对象,哎,内置的一些工具对象。内置的一些工具对象,这些工具对象呢,能帮我们来增强一些功能,是哪些对象呢,就有这么多,哎,我就呢把它复制一下。
19:10
复制一下就是这些,那我们就来结合这个文档的演示,我们来用就行了啊,我这个。拉过来。我们把这个呢放在这边。好,这就是呢,我们这个内置的这些工具对象,包括这些工具对象怎么使用,哎,怎么使用每一个呢,在文档里边也都有演示,比如诶这有演示在这个附录里边,打开我们来看一下,比如呢,我们要诶我们要使用number这个工具类,这个工具类呢,给我们来做一些事情,包括呢,我们可以用string的这个工具类,可以把一个对象的to to string方法打印过来,包括在下边,哎,我们也可以调它的start with方法等等等等,有非常多的用法,这都有示例,我们就可以来对照使用,这就是我们这个Dollar大括号,我们后来用的最多也最强大的一个表达式,那接下来呢,我们再来看第二个叫星号,大克号,这个呢叫变量的这个选择表达式。
20:15
这个东西是什么呢?我们来可以看一下啊,这个星号大括号啊,在这expression on selection,它这个星号大格式是什么呢?我们说啊,它not only can,也就是说我们不仅我们这个变量表达式可以写成Dollar大括号,也可以写成啥星号大,也就是说它和Dollar大客换和。Dollar大括号在功能上是一样的,只不过呢有一个补充功能,什么补充功能呢?我们来看一下它这里边有一个实例,就是呢,比如我们用一个th object来我们取出一个对象,Session里边我们取出user对象,当然呢,我们用object把这个user对象呢,我们先啊,咱们这个存起来以后呢,我们要用这个user对象的值,我们就可以在当前的这个div里边,然后呢,我星号就代表我刚才的这个对象,Object这个对象,然后呢,我们直接获取对象里边的属性就行了。这种写法就类似于我们一个个的来写Dollar大session user里边的firstname session user里的lastname,这都有说明,所以呢,相当于只是来配合th object。
21:33
哎,它呢一个补充就是呢,配合补充使用,就是配合咱们这个object进行使用的配合。配合可以合th object进行使用的,以后呢,我们要获取里边的值呢啊,我们就可以直接这么来做了,哎,这都有这个文档片段,我也复制一份,然后呢,我们用这个大家就参照着这个文档,它都不难,就是呢,每一个使用我们就来参照着文档啊,我们就来做就行了,我们也在后边通过咱们这个CD实验,慢慢的来深化一些高级的使用办法就行,好,这是我们这个选择表达式,还有一个叫井号大括号。
22:20
哎,井号打个号,这是干什么呢?这有一个叫message,哎,这个message呢,它是来取国际化内容的,哎,国际化内容的,那就来直接说一下,要来获取国际化内容的,好,包括呢,我们来看一下这个at大括号,大括号,哎,这有一个link可ul,哎,它的语法呢,叫an大括号,它是干嘛的呢?它是来帮我们来定义URL链接的,哎,它是来定义。URL的,用它定义URL有什么好处呢?我们可以在下面看到示例,哎,示例比如呢,这就有一个示例,哎,这有一个超链接,我们想要呢,念去这个地方logo house 8080,加上这个项目名order details,带上参数,那我们这是我们原来自己写的这个超链接,我们用th ref,我们就可以替换它的值。超链接用谁呢?用an大括号,然后呢,我们把超链接写来,项目名order details,不过不同的就是,哎,我们在这里边的这个变量,如果是我们以前要带,我们问号要拼串,哎,挺麻烦的,那么现在呢,就可以这样子,一个小括号把所有的要带的变量写进去来,K等于Y6 Y6呢,我们还可以继续用Dollar大号去一个对象中来取出值,包括呢,如果是我们要有多个变量,你看啊,下边其实还有提示,我们如果要传多个变量。
23:51
那就K等于Y6逗号,K等于Y6逗号分割就行了,哎,这就是我们这种用法非常方便,包括呢,我们来看下边啊,它连前面都不写了,前面不写我们直接写一个杠,就代表当前项目下不用写主机名加项目名,所以这就是它的这个用法,我来可以把这个。
24:12
放在这,我们来举一个例子,我们以后呢,有U地址了,我们就用它,还有一个呢,叫fragment expression,这叫片段引用表达式。这个东西呢,我们这个文档里边也有fragments,哎,在这里边你看啊,我们要插入一个片段文档,哎,我们要用咱们这个波浪线,咱们这个大壳,那这个怎么使用,我在这儿呢,我们在咱们这个实验里边,再说在这儿呢,就不过多的来叙述了,大家呢,先在下边来把这个文档来熟悉熟悉,这就是我们这五种表达式,也就是说我们用s life模板引擎,只要用好这五种表达式,知道哪一种哎合时用哪种表达式就行了。那么接下来呢,就是一些其他用法,表达式里边呢,哎,比如你可以用自变量。
25:08
变量字变量,哎,比如我们普通的字符串数字,还有我们这个布尔值直接写,包括捺值,包括呢,我们多个数据用逗号隔开等等,这还有呢,咱们这个文本操作,哎,T operation这个文本操作。这个文本操作,这文本操作呢,哎,这就是加号字符串拼接字符串替换,哎,我们后来也试一下,这还有呢,咱们这数学运算,哎,它也支持很多的数学运算,那们在表达式里边呢,就可以用这些数学运算,包括呢,还支持咱们这些布尔运算,布尔运算。布尔运算来什么,并且什么什么或什么或者非什么not什么等等等等,包括呢,还支持咱们这个比较运算。
26:01
嗯。比较。比较运算。哎,比如我们这个大于小于等于等等之类的,包括呢有一些符号,比如这些符号呢,在HTML里边属于特殊字符,你就可以用后边这些来替代,包括呢,还有咱们这个叫条件啊,条件运算条件。条件符条件运算,这个条件运算呢,其实看一下啊,这个FZ啊,这就是跟我们这个,特别是下边这就是我们这个三元运算符,它也支持。主要就是这个三轮运算符它也支持,那么呢,我来前面呢,是一个条件,成立了是后边,不成立了是最后边,哎包括呢,这还有一些叫什么特殊操作,哎,咱们这个特殊的这个特殊操作呢,这有一个叫no operation,就说没有操作,如果我们想要,哎,比如我们三元运算如果成立了,用这边如果不成立,哎我们不想做什么操作,那给这写一个杠等等等等,这就是我们的我们这个的表达式语法,我们只要把它用好,结合文档,那我们接下来就开发简单了。
27:14
我们呢就不一个一个来试了,我们写一个常见的场景,让他们来用一下,好,比如呢,我们还是咱们这个success,我们呢多放一些数据给页面来取一下,这呢放了一个hello,你好,这次的这个你好呢,我来放成H1标签。一标签好,然后呢,我来再来放一些数据点put,比如呢,我们放一个users,放一些用户,这个用户呢,我就直接用ari工具and the list来放几个张三,哎。再来放个你是。再来放个网五,好,我们就放上这几个数据,我们来页面来取一下,怎么取呢,来到success页面,我再来写一个div div比如呢,我现在呢,我用这个TH冒号task,好task斯呢,我们来do符大括号取出hello的值,跟我们这个对比一下,Div我们用th test,哎,我们来取一下咱们这个hello的值,我们说这个u test,这就是不转译,不转译呢,那就应该是显示一个大标题,而转义就是显示H1那个字符串,好我们来把跟它跟之前的我们来分割一下,好我们呢再来把咱们这个数组来取一下,我们这个集合数据呢,来看啊,是咱们这个users的这些东西,我们要便历,从便历呢,来到官方文档里边,跟便历有关,哎,就在这这一块呢,我们来看下边的。
28:54
示例,哎,他这呢有一段代码,哎,比如他用了一个service查了一些数据,然后给我们来把数据用prods保存起来,来到这个页面,然后呢,在页面他用的是什么Che标签,便利谁呢?Dollar大括号,把我们要便利的数据取出来,然每一个数据要用什么变量名,哎,它在冒号前边声明了变量名,冒号后边是要变历的集合,以后呢,就直接来用变量名取出这个数据,好,那我们呢,也来这么来遍历。
29:28
这个遍历的话呢,哎,我想每次遍历都来,哎,我先来写一个H4,哎,我如果写一个TH,注意啊,TH写在哪个签上,每次遍历这个标签都会生成一个哎,TH。意,每次便历都会生成。生成当前这个标签,那也就是说我如果是这种便利,我Dollar符大括号来遍利我们的users,然后呢,每一个我们就用user,哎来充当,我要是这么来遍利,那就会有咱们三个H4,那它里边的内容怎么办呢?我们再来用这个th test,哎,我们用这个文本,因为H4标签里边的内容不就是拿这个test写吗?好,我来Dollar符大括号test改内容,内容是什么呢?哎,就是这个变量叫user,每次遍历的这个user我们放到S4里边,好,我再来画一个分界线,我跟这个来比较一下,我来写一个H4。
30:39
然后呢,我来写一个span span标签,我把TH放在这个span标签上,如果我这么要来便利,那它的效果就是应该是一个H4标签里边带了三个SPA,而不是上边三个H4,哎,这个效果呢,就是三个H4。
31:02
三个H4。四好,我们下边呢来看一下,好,我还是来遍历user。好,那我接下来来写一个高级写法,我们如果想写内容,我们可以用th test写里边,这样太麻烦了,我们呢,我就想在SPA里边,我直接用Dollar福大括号能不能赢啊,首先这种是不能的,要写按照一个语法规则什么呢?我们来到官方文档,这有一个叫引拉里,咱们这个行内写法,行内写法呢,我们就可以用,哎,双中括号或者中括号小括号的方式,这俩有啥区别呢?其实就是双中括号就是th task,中括号小括号就是u task,比如呢,中括号小括号不会转移特殊字符,而这个会来转移特殊字符,好我呢就来写一个双中括号吧,我们来取出什么呢?到了符大括号,我再来取出我们的U字,好我呢就这么来一写,我来重新启动一下。
32:04
我们来看一下我们这个便利能不能生效,每一个效果是不是我们想要的。好,我在这儿呢,来访问咱们这个回车,诶首先我们来看啊,现在呢,我们HR下边我们第一个是用test色标签取得,哎,我们这个test色标签呢,这个分界键下边它是会转移特殊字符,所以说呢,我们会把H1标签完整的显示,哎,右键审查元素我们来看它里边,诶比如说呢,这个H1标签会被完整显示,而我们接下来这个不会转移特殊字符。我们第二个是用u test不会展译,那一就被当成它的本意是一个大标题来展示,接下来呢,我们来看第三个,我们要便利,我们是把TH我写在H4上,所以说呢,我们这一块呢,就有三个H4标签,诶没问题,我来检查元素,那么这呢,有三个H4标签我写在这儿的,而我接下来呢,又在第四个标签里边,我在H4里边,我把TH我病历放在SPA里边,所以说呢,四里边应该有三个SPA们来看一下,诶没问题,这就是呢模板的用法。
我来说两句