00:00
这个EQ的方法来贴过来,前面呢,我看看啊,这个not加上去行。这边呢,我就来一个换行吧,啊,这边我再把它部署一下。好,这边呢,咱们把它打开,打开之后呢。登一下吧,先是吧,不登不行啊,来访问一下这个吧,嗯,这个啊。嗯,啊,这个不行是吧,应该是not应用到em前面了啊,这个应该是不行的,这个应用不了啊,这是一些规则吧,嗯。EQ双等号LGE大于等于LT这个吧,GT是这个吧。
01:03
这应该是有一些语法规则啊行,这个not的话先别用在这啊,这个不能用,嗯,住掉住掉啊,该是这个empty的,一会再看吧,啊行,我们再刷一个安全。嗯。这个啊,这个没有没有这种一款啊。这个闹呢,容易混啊,经常也是容易容易混,怎么办呢?你就试一试啊。这个呢?没有这种语法啊。好,这边呢,再往下看。嗯,除了这个双等号,还有一个EQ,这边呢,我看还有什么,还有empty吗。先看看这个吧,啊,在EL表达式中的表达式啊中使用。
02:05
这个三元运算行吗?三元运算。随便举个例子吧。嗯,到了。比如说啊,点age大于。18。嗯。条件成立的话,我就输出一个什么,不成立我就输出另外一个,那比如说这个大于18的话,我就我就输出这是成年人。行吧,成年人未成年人啊,行这这这能行吗?这个。
03:04
那这个访问的时候怎么访问。啊。在这怎么玩?与。A等于。20行吧,这个这个不能随便写啊,等号左边的,因为你现在在程序中是不是写了一个什么p.a啊,待会试试啊回车。成年人。行吧,可以啊,你说这我年龄可小,我年龄传传传个17走,他这是未成年人。是吧,它三元运算呢,还有什么大于号小于号,它都支持的。那加减乘除都支持的明白吧,表达式嘛,啊表达式这样好,这个了解一下,然后接下来我们看一看啊,看一个重点啊,这个最后呢,咱们讲了重点啊重点啊。
04:04
重点运算运算符啊,Empty。嗯。这个呢,判断主要的主要是判断什么呢?判断是否为空。什么是空啊,什么是空?EL认为啊,EL认为认为什么?认为只要没有就是空。这一句话呢,其实很深刻的。你看看吧,重点啊运算符啊,有个运算符叫什么呢?Em,它判断是否为空,什么是空,依然让他认为只要没有就是空,比如说吧。我现在呢?在这判断一下这个empty,我这给准备一个这个。准备个list集合吧,啊,String啊,My list,又一个every list吧,行吧,啊,又出来好了,我问你这个list几何里面是不是没放东西呀?我把这list that啊attribute存什么呀?我存进去叫my list是吧?逗号my list对吧?那这样的话接下来大家看一看,只要把这个my list拿过来,这个to还是放。
05:25
就按说这个my list的,你想一想,这个变量里边是不是保存了一个内存地址,指向了一个对象啊,那这个它是它是指向一个对象,它这个引用是不是不是空,但是这个empty Mali等的结果呢。来,你看一看,刷一下。错吧,他是错啊。嗯。空吗?其实这个引用它不为空,但是你引用指定的对象里边没有元素,这个例子的集合里边是不是什么东西也没有。所以就是处了,嗯,数这个。
06:03
来它呢,其实有一个相反的啊,也算是一个重点啊,Not,什么I。来把它复制也放到这。嗯,上面是处塞镜是什么呀?放啊。就是说这个是处的话,这个就是空。明白吧,这个如果是,这个如果是处什么意思?这个是空,就是不为空。这个如果结果是数的话,就代表不为空。求反,求反的嘛,嗯。另外呢,如果你在这边再写一个Dollar empty,嗯。
07:02
算一下。嗯,可以了吗?其实它是个对象吗?他是个对象,他是个证照对象啊。但是那个字符串里边有东西吗?没有。再来一个now。这这这这这是啥呀,这个。啊。这个闹呢,到底是关键字闹呢,还是。还是还是还是还是跟这个一样的ABC呢。啊。这个你测一下知道了,来刷一下,你看什么呀?True吧,True接下来看啊,request.settribute专门存一个名字叫none。存一个张三。
08:03
啊,这个呢。啊。这个到底是这个吗。来刷一下你就知道了啊,来刷新。是吧?嗯,这个结果是什么,所以这个那是关键字啊。这个囊不是这个囊啊。明白吧,你往里边,你说你存存存你存你存出去正好给他,给他取一个叫那。起个名叫那是吗?没这样的啊,一般不会这样写,所以这个呢,其实并不是这个字,这个这个并不是这个张三这个数据这个呢,其实还是一个什么关关键字还是个关键字。是吧?这里还是关键字啊。
09:03
关键词呢?表示什么啊,这个结果你已看见了,最后一个是什么false,这都是true吧。没有用。你说你这高了,你看这样能不能,这样能不能取出来数据啊。我先加俩杠了啊,区分一下行吧,加俩杠哎,刷一下。嗯。是吧?你这俩杠里面啥东西也没有了,你好好看你有啥呀,你啥也没有,所以说你说你想想把张三取出来,这这种方式行不行啊,取不出来。你说你正好那set啊吹,你给那个存个当弹,正好存的时候起个名叫当你这是给自己找不痛快还是啊,你取不出来了,这是空的。
10:04
所以其实我哎呀,我觉得这个东西也不用了解是吧,也不用了解这个不学他又怎么了是吧,反正我以后不会给他起名叫什么啊。啊,那你要是所以这个知识点的话,你得知道,就怕有些判断题啊,有判断题面试判断题问有筷子赛的出去了,存的时候正好给一个数据起个名叫,那完了之后取能取出来不能,他问你能不能取出来这个。它其实就是考验一言表达式里面这个东西到底是关键字呢,还是说它是一个名字,不是一个普通的一个变量之类的。那这个了解一下啊,这个如果你不不理解的话,也无所谓了。也没有那么巧合的,这个去正好碰到这样一个题目啊,这个东西一般也没人考啊。少,但是见过见过啊,见过一个东西,有的面试题上有这么一个东西的,行了,主要是说一下这个empty啊,大家要注意了,Em其实你你你只要是里边没东西。
11:05
我给你一个数组,这个数组建好了,但是数组长度是零。它也是出路。明白吧,Em的意思就表示说你是空,你没东西,你就是处,它跟那个Java编程里边这个none还不一样,Java中是不是只只有none是是是是空啊,Java中是Java中,你看写个双引号,我们在Java变中写个写个双引号,一个A变量反应它这就不是空。这不是none啊,但是你看一看人家是人为是none,没东西,你说你现在把list及格,你又出来了,我问你啊,单独说Java my list,它是none吗?它是这个none吗?不是,它不是none,但是在会认为它干什么是空的。就是那句话,判断是否为空,什么是空?一认为只要没有就是空。只要没东西,它就是空啊,不管你谬了对象怎么着怎么着,你有粒色的集合,你有M集合,你卖卖集合,粒色的集合没放元素,那就是空。
12:04
他是这么这么判断的啊,所以它底层有没有重写方法呀。肯定重写了,它底层掉了一个历史的,记不得size。是吧?My list的集合是不是这个list集合是不是有个size方法呀,Size如果等于零。就是处是这意思吧,所以它底层有判断啊,先不用管它not是求反的就行了。好了,那这样的话,咱们E表示就讲完了啊呃,这个基本上呢,应该是够用了啊,基本上应该是够用了啊这个东西。但是如果再遇到一些特殊的语法的话,你可以再从网上查一查啊,找一找,搜一搜啊,行吧,这个咱们关了吧,嗯,关了来。呃。
13:09
Elt STL,我看看啊。CSP里面。嗯。行吧,好,那咱们就。这个就不再看了啊,我们看这个。这两个你下一周好好练一下啊,一个语法,一个语法看一下。呃,打好底子吧,算是啊,以后呢,咱们再往后做项目的话,都会使用这个了,使用这个一二表达式的啊。嗯,好这个啊,也要知道这啊好了,那咱们这个就过了啊,接下来呢,咱们看一看这个GSPL吧。这个东西。JSPL啊。咱们的JSTL在前五天的时候啊,我记得在讲COURSE06SJSP时候,嗯,打开是吧,JSP的基础语法,当时呢,我们有几个知识点没有讲,说到以后讲是吧,那个以后呢,说的就是现在啊。
14:17
你看见这个了吧。这不J基础语法吗?然后往后这边不是有一个意思e ignore吗?属性指定当前一变中如果有这个E表达式是否忽略了true啥意思啊?忽略吧,False表示什么呀?不忽略,再往后看,咱们是不是学过一个指令叫配置指令,是不是学过一个指令叫include,是不是学过一个指令?哎,到这了,Take LA吧,你往后看说什么EGOV项目中讲解吗?Take LA吗?这个指令是不是没讲过?今天我们要用一用这个指令啊,这就是take library表示什么呀?GSTL这个TL是谁?就是t library。
15:05
明白吗?这个G指的是GSP,这个S就是standard。Standard什么意思啊,标准的啊,JSP标准的标签库,简称JSTL,我们要用这个标签库里面的标签来代替Java代码,明白什么意思吧?啊,代替Java代码。所以呢,我们把这个说一说啊,Tag LA叫tag library这个指令啊,好,我们把这个关了吧,嗯,行,我们往上翻一下,翻到这个071GV里边,我们找到这GSTL啊。我们这有个PPT,你可以先打开看一看,GST JS standard t library表示JSTL嘛,JSP标准的标签库啊,是这个东西标签库。这个标签库呢,我说一下啊,嗯,可以使用咱们sun提供内置的标签库。
16:03
啊,也可以自定义标签。那我们呢,一般呢,自定义标签的机会很少,所以呢,我们就不再讲那个自定义标签了,我们讲一讲内置的标签,常见的几个标签用一用就行了。好,注意听啊。嗯,我再强调一下JSTL呢,也是属于谁的范畴,还是属于GST里边的。然后GSTM是GSP标准的标签库,我们用这个标签库来代替Java程序。啊,就跟E是一样的,咱们呢,将来在JSP里边编写这个E表达式,并且联合什么JSTM一起呢,基本上就能把所有的Java代码全都代替了,不写Java代码。你想一想GP是不是啊。你既然是做视图层,做页面展示的,你是不是在serve里边把那个数据存到request对象里边啊,你既然存进去,我问你到ER表达式里边能不能把的数据出来。
17:11
你看咱们的一贯作风,是不是在那个搜里边把数据存进去跳吧,跳到视图,在视图层把页面把那个数据展示出来吗。所以呢,咱们一点表示就是取数句嘛。这STL呢,它就是给定一些标签,它这个标签,比如说像if if语句啊,用它能不能写啊,可以数循环啊,能不能用它写啊可以啊。明白吧,你在gsd里边无非就是编写这些东西吧,编写什么if语句啊,For号循环呀,更复杂的业务逻辑,你不会编写,所以这个时候咱们E联合GSTL,咱们刚刚讲过E下午呢,咱们讲一讲GSTL啊,GP标准标签库里东西,我再强调一下,标签库它有内置的标签库,就是说谁写好的呀,三已经写好的标签库,我们可以直接拿来用。
18:00
明白吧,可以直接拿来用。嗯,另外除了内置的之外啊,还有自定义的什么意思,标签这种东西你可以自己写,在能写这种标签我们也可以写,我们写完这个标签我们也能用啊,所以是这样,来咱们一起看一下这个PPT呢,我也不看了啊,一共讲不了几个标签,大家提一下吧,我看了这个东西很乱呀。是吧?嗯,这边的这边的这个这个这样吧,我从这呢,嗯,建个文件夹吧,网上资料啊,还是给你拖过来吧,这个这个啊,这个这个是吧。嗯,行了,放进去了。标件库的介绍接片讲解,这个这个这个这三个是这个这个这个的解压缩啊。明白吧,嗯,行嗯,一起看一下啊,这个呢,才是我们核心才是要用的啊,我们这JSPL的呢,把这个东西呢,给它解压缩之后就是它了,我们可以把它打开一起看一看啊,里边呢,你会发现有bug了,是不是帮助文档啊,另外的话加啊这个加入down这个是啊,这个是帮助文档。
19:24
呃,另外呢,咱们还有library吧,有两个炸包是吧,一个GSTL点炸,一个是standard点炸吧,啊有两个,好了,我们要用一下啊,这是TLD文件啊,这是SMA配置文件,这种配置文件呢,你看一看打开就知道了,这是SMA是标签吗?做标签t lab是吧,嗯,标签。啊,标签。行吧,一会再看吧,啊好一会再看这个东西。然后呢,呃,我们要用这个GSPL的话,首先的话,你必须保证你项目里边把这两个账包导进来了,我们一起来看一看,打开这个library,然后我们打开了JSTL,我们会发现Java X只有谁才能命名,命这个名啊,S吧,Java X serve吗?JSP吗?JSL吧,你看这不核心标签吗?核心的是吧?这是什么smart格式化的啊,这是circle的啊,这都是class吗?
20:27
嗯,都是class,这是谁制定的规范啊啊,S制定的规范,但是要注意啊,这套规范有实现吗?有啊,三呢,把阿帕奇的实现收录吗?S和阿帕奇有合作。啊,其实我们用的是谁的呀,用的是阿帕奇提供的啊,实现好的。嗯,核心的。J。用的这些啊。你看这个包就知道了。是吧?嗯,这不是吗?Org,阿帕奇是吧,Take。
21:01
我再强调一下啊,JSTL也是后来的语法。原先没有的,原先在JSP里面编辑的是什么Java代码明白吧,后来才有了JSTL。GSB标准的标签库GSPL引入了谁引入了阿帕提写实现实现的这个标签啊,你看这个包你就知道了啊,三和阿帕奇是有合作的,这个知道就行了啊。阿帕奇呢,是一个非营利性组织,这个指导是吧,嗯,这个那咱们就来用一下啊,怎么用呢,这边呢是这样啊,嗯,我在其他的位置,我先建一个外部项目,让大家看一看吧,点右键新建一个什么呀。带小地球的啊,外部项目,大家看这个建外B项目的时候啊,你会发现一个问题啊,什么问题呢?这有好几个选项是吧。咱们默认呢,是使用了加一五点零,但是我在讲课的时候一直用的是什么1.4吧,那1.4的时候,你看下面有个框框,这个框框我从来没有选过。
22:04
这个框框上写了一句话叫ADD g ST library to for live folder。他说这个J第二个库啊,它会自动给添加到web for Li这个目录下。所以你只要打上勾啊,就自动就进去了,来点no,来点no,你看看这个test项目,你会发现呢,这个里边有个jre是Java的运行式环境,你会发现Java呢,这是1.4的包吧,再看这reference。引入了两个大包。一个叫GSPL,一个叫standard吧,大家看好当前的EGV项,这个EGV项是不是没有那两个插花?咱们要是OGPS和这个文件上传吧,是不是根本没有它呀,哎,就是因为你在建项目的时候忘了什么。忘了打勾呢?你把这勾打上去是不是就有了。哎,没听明白什么意思吗?就说这这两个账包。
23:01
为什么我们那个没有建项目的时候没打勾啊,另外的话我告你上啊,还有一个问题,其实啊,你建5.0这是最好的,你看啊,建小地球的项目选5.0,接下来TEST2好了,大家看清楚了啊,直接把这个项目建上去。项建上去这个版本是是什么版,是基于5.0的版本吗。啊,G5.0版本,你好好看看啊,打开这个项目你会发现呢,这个呢是GRE吧,这是drre对吧?嗯,那看啊来这是什么g two1.4吧,1.4的时候还叫g two意义对吗?到了5.0就变成什么了,加va意义了,明白吧?嗯,所以在2005年之前的同学啊,可能比较习惯叫这个1.4啊,可能比较习惯叫这个习惯叫这个基度意义。但如果是零五年之后的同学呢,那可能是习惯叫Java意义了,这个大家知道吧,Java不是有一个十周年嘛,九五年到零五年不是十周年吗?十周年的时候其实什么事都没做,他把这个基督意义呢,收录成了加班意义。
24:10
改名了。是吧,原先叫基突什么me,基突什么mee对吧?基突什么me是吧,全改成Java SE Java me和Java me嘛。他是不是又整理了一下啊,你看他的包的目录结构不同啊,你点开看一看,它是这么多这么多这么多这么多,你看人家。就几个。并且啊,这个里边东西一点都不少,为什么?因为他还收入了GSF。收录了GSF,你在这还没有这个GSF。是吧,你在这叫Java X的炸包,你看人家叫Java一点大,你打开你看这里面有没有加va X。有吧,所以你看啊,到5.0之后呢,直接收入这几个炸包,也就是说你原先是虽然是1.4,你这么多炸包,现在我变成几个了。
25:05
我变成一个了,剩下这三个是额外,剩下这两个是额外的。这个GSPR你看好了啊,你看好了,看好了,这次到了5.0之后,彻底发生了改变,它把三和阿尔帕提的统一打成几个包了。他把三和阿卡西的是不是打成了一个杂包?原先可不是这样的啊,原先人家是分家的,你看见了吗?原先是分分家的,你知道吗?所以说一般情况下,我们在公司里面现在建的项目最基本都是基于哪个版本的呀。加Y15的。明白什么意思吧,所以这个账包你用考虑吗?不用考虑它项目里面是不是自带的,自带了,也就是你这里能用标签吗。可以直接用。明白什么意思吧,所以这边呢,我就是想跟大家讲一讲,说聊一聊这个事啊,别到时候一见一见5.01见五我就懵了,一见个1.4,你可能熟悉。
26:08
我说一下啊,其实啊,嗯,我从第一天开始到现在啊,一直建的项目是1.4,为的就是讲这一个知识点,明白吧,就是想跟大家聊一聊,这个1.4跟5.0有什么区别,其实你发现炸包多,炸包少了,但是这个炸包里面东西全融到一个里边了,还有一个问题就是说它呢,在这个里边有一个GGGGSTL,点赞你会发现你建这个项目,你看啊,你建设外部项目,你选这个5.0,你看下面都不给你机会。勾是不是都打不了啊,像你建5.0版本的时候,其实那个GSGL的库早就引进去了,不用你管是不是这个意思。但是如果你要是建了1.4项目,如果你建了1.4的,你要是用的话,你打勾你要是忘了怎么办,你看谁忘了,我们当时在做一级UV项目的时候,是不是就忘了。怎么办呀?那这个时候你还能怎么办?你只能把它干什么呀?复制一下子打开live吧,打开这个leave,这个leave贴过来,嗯,这边就有了。
27:12
是吧?所以你要知道是怎么来的啊。嗯,大家知道这个事儿行了,这边的解释呢,我就到这儿吧,这个项目全删了啊。这个没有用了,删除删除删除OK啊。行了。就这样。理解我说的意思就行了,所以呢,首先要用GSPR必须导两个沙包。啊,GS点点赞和standard点点赞啊,所以这边呢,咱们得说一下这个事啊,好就在这个里边说吧,呃,圈A配置配置coding写上去GB18030,完事之后在这再加上一个注释吧,来好在这呢,咱们写一个注释啊,嗯,首先第一个GSTL这个到底是什么,是GSP标准的。
28:09
标标准的。GSP标准的标签库啊,标签库嗯,作用呢,是使用什么,使用标签代替什么,还是代替Java代码啊。GSTL呢,标准啊。标准是散制定啊,标准散制定。呃,阿帕奇实现的啊,散收录了阿帕奇的啊,散收录了阿帕奇的实现啊3GITLGT标准的标签库,作用是使用标签代替加va代码,2GT是散制定的阿塔奇实现的啊,但收录的阿塔奇的实现,另外一个还有就是要知道啊,嗯,对于什么呢?对于接to EE,接to EE1.4的项目啊,1.4的项目来说,JSTL相关的什么?
29:21
相关的炸包必须什么?大包啊,必须手动什么?引入啊,手动引入。作为G1.4的项目来说啊,需手动引入。分别是谁啊,叫GSTL点炸和一个叫叫什么叫standard的点炸是吧?啊这个这个。但是对于啊,呃,对于MYELIS开发中啊,开发中如果项目是创建基于Java EE5.0版本的项目啊,5.0版本的。
30:08
JSTL相关的Z不需要手动什么的引入。啊,买一颗开发工具自动引入啊,自动引入,并且引入一个包,就叫什么GSTL点赞。他好像是什么杠什么一。点几?杠1.2到引进引进来的。行,这这这这个这个这个不写了啊,删掉了,嗯。是这样,那么接下来呢,咱们就来看一看来。使用GSTL。的步骤啊。这边呢,我再写一个吧,嗯,GSPR呢,嗯标签可以使用什么呢?呃,内置的标签啊,也可以什么呢?自定义标签也可以自定义标签做这个啊呃,我们这里啊,嗯只使用什么呢?只使用内置的标签啊。
31:28
只使用内置的标签,这个自定义呢,我们就不带自定义啊,因为我们会发现啊,我们在项目开发过程中很少自定义标签很少用,但是说并不是说没有啊,很少用,多少年还不用回呢啊,所以咱们就是用内置的就行了,嗯,这个自定义标签呢,我会简单提一提怎么去自定义啊,简单提一下来使用加T的步骤,首先第一个步是什么?第一步呢,其实就是什么呢?在项目中引入什么GSTL的什么相关炸包啊,确保有了啊,确保炸包存在啊,炸包存在其实就是GSTL点炸,还有一个叫什么standard啊,点赞就行了,引进来。第二步是什么呢?在需要使用标签的JSP页面上啊,使用t Li指令啊叫t Li tag library指令啊,引入标签库,你光网这放了一个炸包。
32:43
你如果希望在这个JSG里边用那个标签的话,你还得在这个位置引一下子怎么引圈A加一个,不是这个也不是这个啊,叫tIgEr library tIgEr library中有两个属性,一个叫还有属性UI。
33:00
这俩不能随便写,那这个写什么呢?啊对了啊,咱们再说一下啊啊这个嗯,目前啊主要掌握谁就行,主要掌握核心标签库啊,核心标签库C标签C标签啊所以这个位置呢,咱们看一看吧,嗯,要想用标签,其实它底层还得关联一个配置文件啊,大家看这这边有没有啊来打开哪个呀,先看看这个吧。叫standard,这是阿帕奇实现的吗?对吧?在Meta info下边啊,有很多TRD文件吧,我们其中有一个文件叫c.TRD,看见了吗?这个就是我们所谓的核心标签库,它其实啊讲什么标签用完之后你就会发现标签已经那回事,通过反射机制呗,通过配置文件呗,这边是不是有很多类啊,我问你啊,谁都知道表面在这用的是标签,其实底层执行的是不是Java类。那这是不是是不是阿帕奇起的Java类啊,你要想执行这些类的话,怎么和这些类建立联系啊,那就是通过配置文件吗?
34:08
对吧,所以这边我们就用核心标签啊,哪个是核心标签配置文件呢,这个是,所以我们把它打开,大家看这个文件是不能改的啊,这个不能动,在这有UI对吗。我们把这个东西干什么呀,复制一下。放到这儿,嗯。这个名字就可以随便写了,来一起看一下,注意听啊,这个原理还是很重要的,这个一般的我们都写成C标写。但是这个名字是随便写的啊,愿意怎么写怎么写,你看这个能能用了吗来。能不能用这不if标签吗?是吧,If标签。来来。刷循环,刷循环标签。是吧,这都能用啊。但是一般的不要叫这个名啊,写成C吧,因为come核心标签嘛,是吧,都叫C啊,所以这呢不要随便写来咱们用一下看CE。
35:10
Say choose是吧c one say one say other是吧,Other,你这是,这不就if else if else if else if吗是吧?那save什么冒号,Save if,嗯,这也可以用。其实你看啊,它的执行原理是什么?它是看到了C就看到了C,看到了C就看到了这个uri,看到了uri就通过uri定位到了这个配置文件,通过这个配置文件的描述,大家看它这用的是if,所以这个时候从配置文件里边找了一个标签,这个标签叫什么叫if,他找到标签就找到了标签下面的类,找到类就执行这个类里面程序。简单吧,其实也不难。
36:03
我说了啊,GSTL是什么?是我们GSP标准的标签库,是散制定的标准,阿帕奇对它进行了实现,其实我们表面啊,还在这用的是标签,你想一想底层它是不是还是直行的类啊。它就是通过这个C吗?就找到了这个C吗?找到这个C之后就找到这个路径吗?找到这个路径,通过这个路径它是定位到这个配置文件中了,然后你这不是有个if吗?所以这个时候他就不会乱找了,他在这里边正好有个标签,这个标签叫什么if术标签,拿到if务标签就相当于干什么了,拿到这个配置文件里面这个类名了吗?拿到类名是不是就调用这个类里面的方法呀?其实你在这用的是标签底层执行的是不是还是这个类里面的方法。这叫使用内置的核心标签,这是使用内置的标签,那我问你啊,自定义标签你会吗。是不是也会呀,那我问你啊,这个配置文件我能写吗。
37:04
这个配置文件我们是不是自己也可以写呀,只不过写完之后需要放在一个特定的位置上啊,这个配置文件一般写完之后我们不打炸包的话,一般放到哪啊,放到web in座下边。直接放到我们那个web座下。嗯,在这呢。啊,一般把这个TRD文件放到这,这要是自定义的话,你想一想这个类我们能写吗。可以,而这种标记我们能写吗?可以吧?都可以写,所以呢,咱们现在啊,只要掌握一下核心标签就行了啊,我主要呢说一下这个C标签。C标签对的是哪个,对的是这个c.T2D,我再来说一下怎么做啊,首先第一步干什么。请将这俩账给倒过来。第一步啊,第二步呢,如果在JT里面要用的话,写个什么。
38:00
猜个lab写进来明白吧,第三步那就是在这用就行了。接下来程序的运行原理我再说一下,底层一定用了反射机制啊,这个你就放心了,因为它有配置文件。在这个位置上,他拿到了C,就拿到了这个路径,通过路径定位到配置文件,然后由于你现在是一个if,所以从这个配置文件里面找if,找到if之后呢,发现你的if后面对的是这个类,直接执行你这个if t这个类用的方法完成一种效果就行了。它就是这么一个过程,这么一个步骤,像这个配置文件我们自己能写,像这个类我们可以自己写,像这个配置文件里的信息我们可以自己写,这都可以自定义,所以我这边上来我就提了啊,标签其实包括内置的标签,也包括自定义标签,我们只使用内置的标签就行了,而且现在我们主要掌握核心标签或C标签,除了这个配置文件,大家想一想是不是还有其他的配置文件?你打开好好看看它配置变多了,这是是不是都是标签哦对了,我们不是讲这一个啊,我们还讲这个呢。
39:05
这是函数吧啊,我们到时候会讲函数啊,就是这样,我们现在现阶段我们就先先看它就行了啊来有的人说老师这每次还得打开吗?这这东西好像好像很长啊,记不住啊,这梅子还得打开吗。哎,二谁呢?有帮助。明白吧,但是核心标签看清楚有两个。选哪个呢?哪个长就选哪个啊。哪个长度选哪个,别选这个啊,选上这个之后,你看它定位的配置文件是哪个。是C-一下划线0.720。我们这个不能定位它啊,我们这个位置其实是差了一个什么。好像是JSP吧,来。你看。是吧,所以这个呢,你要注意啊,这一不小心就出错了啊,这是引入核心标签库让这是让什么让JSP和什么核心标签库的相关配置文件叫什么c.TRD建立什么连接吧,建立连接它其实是让我们JD的核心JD和这个核心标签库的相关配置在c.TD建立文建立连接,建立好连接你就可以用了,就在这用就行了。
40:22
行,那这个时候呢,第一啊,引入2t lab3干什么,在需要使用标签的位置直接使用标签即可,但是使用的时候呢,一定得打间号啊,打间号才能出来。打减号能有提醒,这边有很多标签对吧,有很多标签。哦,往下不是了啊,往下这是啥?这是动作,这是JSP内置的动作吧,那咱们学过forward动作吧,啊学过forward这个不用管,咱们主要是看C,你看C12345678901012。
41:06
十三十四。是吧?嗯,C吗?来加号,C冒号,你看这都是C的嘛,C变成这几个,但是呢,我们只要讲这么几个就行了啊,首先看if来,我来解释一下这个标签。第五个解释啊,解释标签。怎么解释呢?我现在我就练过去,练过去之后,我就把这个if服贴过来,来,我随便找一个啊,找那个衣服吧,也也别也别找衣服,衣服比较比较这个多一些啊,咱们找一个少一点的。拿过来放在这,这就是配置文件里面的标签,标签解释一下来一起来看一看。好,这边呢,整体缩进一下吧。
42:02
或者孙啊好这边呢,这是什么东西啊。这是对标签的描述吧?啊,这是标签的什么描述?好,再往下这是什么?这是不是标签的名字来继续,这是什么?标签对应的类吧,对应的需要执行的类啊,需要执行的类来继续,这是什么?这是标签体中的内容类型啊,标签体中的内容类型,标签体中的内容类型这个呢。标签可以出现的属性啊,往下这是对属性的什么?哎,这是对属性的描述啊,这个是对属性的描述,对属性的描述来,再往下这是什么?这是属性的什么?属性的名字吧,再往下这是什么?这是说明啊该属性是否支持EL表达式。
43:14
啊,刚才讲过一二表达式,现在是不是就用上了。如果这个值是处的话。啊,错了错了啊,不是这个,这是该属性,是否是必须的啊。是否是必须的?True表示什么,必须的明白吧,你看你这个这个这个不写行吗?这个这个T不写行吗?报错了吗?报错了吧,鼠标停到这,他说什么。Missing require missing。缺少必备的属性。是吧,你会,其实你也不用看啊,你奥特加斜杠带黄点的,带小圆点的看见了吗?小黄色小圆点的都是必须的。
44:02
有这么一个规律啊。能理解吧,所以你双击一下子不就行了吗?不就来了吗?是吧,是这样,哎,是这样吗?点过去啊,看一看这个if标签往下走,Test require to。必须的吧,必须的啊,这个是来再往下看,这个是什么意思。错吧,表示必须的,这个呢。这个触表示什么意思啊?这个表示该属性是否可以接收EL表达式?接收EL表达式。处表示什么,表示支持啊,第二表达是。那这这能不能就是说这这个地方能不能填EL表达式啊,到底能不能填,那就要看你这个属性嘛,看你这个test的属性到底是不是能够写EL表达式。
45:03
明白吧,这啥意思啊?可以啊,是吧,可以写EL表达式啊,这就描述完了,这就是标签。啊。还有一个应该有疑问吧,这个body content什么意思啊?标签体的内容类型,也就是说什么意思,其实是在这个标签体,这个叫这个叫做什么叫做标签体吗?标签体内容类型是JSP,这是啥意思啊。嗯,我说一下啊,这个很好理解,什么什么意思,就是说你的标签体里边,你只要是合法的JSP代码都能往这写,那我问你啊,我写个ABC是不是。属于D吧。它是不是属于JP中的普通文本?是这意思吧,所以这其实他说个JD,就是说什么都能往这写,你愿意写啥就写啥。
46:06
可以写啊好,那这样的话咱们再来这看一下,比如Dollar是吧,嗯,这个empty吧,嗯,比如说点your nameme,那这边的话我就怎么办呀,我就输出he标记对吧,然后Alan center居中,给它居中啊center,然后这边来一个什么。来一个放的字体行吧,来一个颜色啊,我这加上去发颜色红色是吧,就是什么意思啊,请提供什么。我在这写上啊,这叫请提供用户名是吧?那这个能不能把它复制一下,再或者再写一个C什么if吧,怎么写啊,Test如果不为空怎么不为空啊,Not empty不是刚学过吗?还点什么your name吧啊如果不违空这边的话,咱们就来输出一句话,说什么欢迎吧啊,欢迎某某某,比如说欢迎某某某来改一改绿色的欢迎谁呀,Dollar大括号谁呀,卡点什么那个这能看懂吗?
47:30
有同学问,是没有那个什么吗?没有那个叫什么那个。那个else吗?非得写俩if,写个else啊C冒号L你看哎。没有啊。没有吗?没有else,没有else啊,只有if内置的是这样的,一会咱们来看看else if啊怎么写,这边我就来访问一下,那这个能不能访问啊,试一试啊,把这个some点中点它部署。
48:04
部署OK,这是不是结果是true或者是false?因为test。这边的类型是什么类型,我还没看是吧,看看吧,看啊。呃,If标签其中有一个属性叫什么test,而且是必须的吗?是必须的吧,而且是。能支持一二表达式吗?支持类型什么类型,不玩类型啊,咱们其实应该复制这个啊,这个可能更好一些,复制这个吧。行吗?复制这个啊,我再换一下,嗯,这个例子不太好,这个例子。我贴过来啊,我来再来改一下,把这个费点劲改一改啊来这个呢,咱们往这缩进一下,然后呢,这个咱们还是给它删了啊,来这个还是名字,这个还是什么描述吧,然后这是名字,这是处,这是处啊有这么一个东西吧,上面是不是没有啊,标签的描述啊,这边再加过来吧,标签的描述,然后呢,这是标签的名字啊。
49:11
标签名字这边呢,是标签对应的需要执行的类,然后这边是标签体的内容类型,行吧,标签体的内容类型,然后呢,标签可以出现的属性。标签可以出现的属性啊,这是对属性的描述,这是属性的。名字啊,这是属性的名字,然后该属性是否是必须的?是这个吧,嗯,该属性是否是必须的,该属性是否支持EL表达式啊这个位置的,然后这是什么。该属性的数据类型吧,罐类型这罐类型吗?是吧,上面就删了啊。
50:10
行,就那个吧,嗯。好,缩进。那这个只能是触source啊,所以这边呢,咱们再来看一下,把服务器启一下,把它点它启动,然后呢,我再把这个打开。打开之后我们一起看一下啊,这边访问的话点登录吧,点完登录之后呢,这边应该是点谁呀哟,这还得重新写吧,嗯,叫GS TL test.tp。请提供用户名,用户名我就提上了username等于什么张三回车。你。其实就是这样。If语句怎么写?这样写?
51:02
另外再看啊,这边呢,Give里边有一个属性叫Co,还有一个属性叫哇,这俩是干啥用的。这个里边有一个scope,这个里边还有一个吧,干啥用的,我们研究一下啊,这个scope单词翻译过来应该是什么范围是吧,比如说我写一个吧,写一个request。行不行啊,写个request吧,这边我也写个request啊,然后呢,这个地方呢,我写个变量名随便写吧,写个A吧,这我写个B吧,行吧。这大家能看懂吗?那么接下来我就在这高了,符号能取吗?能从范围里面取出这个数据吗?哎,这是什么东西啊,高了我再取一个B行吗?中间我加个顿号可以吗?顿号左边和右边吧,我试试啊。哟,我这个最好还是加一个横线吧,啊醒目一些,来咱们刷一下。
52:03
放着醋。这个果然是放是吗?最后在这显示的是欢迎吧,欢迎的话应该是这个是处吧。所以你看最后这显示个false和true啊,哎,这个是true啊。这个是什么放吧,所以大家看一看这个其实是起什么作用呢。这个其实是可以将这个T的后面这个运算结果保存到某个范围中。因为大家知道这个运算结果有没有可能在后续的程序中要用。这个值到底是true还是false?有没有可能在后续的程序中,在同一个JP里面,在后续的程序中使用这个变量值?有可能吧,所以它呢有一种机制啊,这种机制是给一个scope,再给一个变量,那这样的话,将来它就可以往这个范围里边存什么了。
53:00
把这个值是不是存到这个范围里面,但是你要知道存进去的时候需不需要给它起个名,这个就是什么。你想一想,他底层怎么写的,底层是不是一定是阿帕提的那帮人是这么写代码的,Request点了set啊,Tribute,他一定是在前面写了一个什么A,后边写了个true或者写个false吧,接下来你是不是才能这么写?是不是提出来了,你想它为什么掉筷子呀,因为你这只只写的是什么request子。能理解吧,哎,但是不是啊,但不是不是这个啊,这个request不是这样的,它是默认值是什么配置。哪个耗费资源是最少的,配置耗费资源是最少的,这个位置也写个配置行吗?能行吗?这个删掉来再试一下,刷一下。一样吗?一样不一样的,可能看不出来区别了是吧。
54:10
嗯,这个行不行啊。所以说这边我写上啊,其实啊,Scope是什么呢?是指定啊,指定什么,指定T的属性。啊,运算结果。保存范围。可选值是什么?Page request session和application,明白吧,是这个啊,这都属于什么字符串,字符串啊,字符串它对应的是谁?是这个page context范围,它这是谁呀?Request范围吧,嗯,这个这是什么呀?Session范围啊,Session范围啊,这个是什么呀?Application范围吧,这大家理解吧,往往这看啊,往这看。
55:15
就是这个scope刚才说了一下啊,它是什么呢?它其实是指定这个test属性运算结果的保存范围。可选值是这么几个,这个配置这只这不能写这个你注意了,不能写它啊,没有这个值,这个位置写的是个双引号,双引号里边只能写普通字符串,这个位置只能写个配置。配置代表什么配置?明白吧,缺省值谁是缺省值,Stop啊stop,如果不写的话,如果不写。默认值是配置。耗费资源最少呢?范围是不是最小啊,范围最小。
56:03
所以这边你刷新一下,你看可以没问题啊。这家能写吧,所以大家现在应该想起来了,我们曾经学过GSP里的四个范围,你还记得吧,Page contest request session,好,Application,我问你这几这几个里边这个是不是咱们基本上没有用过?今天用了吗?你要知道这个标签谁写的。这标签底层代码是不是阿帕提那边来写的,对吧,那我问你啊,他写完程序之后,我们将来在外边的时候,我们在编写这个JD的时候,是不是使用这种方法把它数据取出来啊。那这个配置卡带有用吗?这波程序呢,它底层是阿帕奇为我们写好的,他必须把这个数据存到一个范围对象里边,然后我们编写JSP的时候,才能使用EL表达式把这个数据取出来。怎么能保证数据量,怎么能保证内存耗费是最少的?
57:07
哪个范围啊,这个范围吧,所以这个范围是不是一直在用啊。你好好看一下这个Co,要不写的话,他把数据存到哪了?是不是这个里边呢,你存这个范围是不是有点大。他存到这儿了吧。而我们下面是不是就可以用了。这个page contact当时在讲课的时候,我说这个东西没有用,我说这个东西当时当时是用不上的,当时在程序用不上,为什么?因为我这么说的呀,因为在这page contact调他的set tri这个方法,把这个叫什么user nameme等于什么张三存进去了是吧,你这边加一个什么,那么string型user nameme吧,写个什么张三吗?那大家看一看后边如果不写张三,我直接把这个东西写成一个your name,在下面同一个JP里面,是不是把这个数据再取出来,叫page context有个方法叫get tri这个方法吧,把your name取出来,你这样做是不是没有用啊,没有意义吧,大家都知道这个变量是不是都在这个service方法里边,这个变量既然在这能用的话,它下边能不能直接用啊,所以这个范围是不是基本上写不出来它的作用啊,但是今天你再看今天这个代码不是一个人写了,今天这个代码变成了两个人去写,一个人去写标签内部的程序,一个人在用这个标签,而我们就是用这个标签的那个人,他底层在写的时候,他是不是必须把这个值存到某个范围里边他。
58:27
他找的那个范围是什么?最小范围耗费资源是最少的,所以这个范围是有用的啊。其实你体现不出它的它的一个一个用法,其实是因为什么呢?因为你没有没有自定义标签,如果有一天,如果你自己去定义这种标签了,这个标签的底层的类是你自己去写的,你会发现配置contact很有用。你肯定会找个位置把这个数据存起来,为什么呀,以便后面的人使用。是吧,所以这个时候你就就就有用了,就看到这个非常态的范围是有用的,所以这个东西现在现在看不出来啊,现在现就是原先的时候咱们看出来,现在的话讲到标签这了,应该能看出来了啊来咱们刷一下,嗯,可以没问题。
59:11
所以这个值你得知道了解一下啊page啊,尾快的带呢,怎么离呢是吧,这要是不写就是什么page。啊,不写就是配置。好,这就是咱们所说的这个艺术表现,行了,下课休息下吧,下节课。
我来说两句