00:00
我们来学习简单标签,实际上呢,这个就是我们所谓的这个叫自定义标签,看一下。我们前面写代码呢,我们为了实现显示的话,我们都是在那个JP页面上面写的Java代码吧,那写Java代码实际上我们看到了是吧,维护成本还是比较高的。特别是有这个循环嵌套的时候,那个。星号百分号会套好几层,但我这个里边没有了啊,也要图里边啊,也有一点,但这个的话呢,不算复杂,我们在写的那个。写我们呃,Java web jdpc那个案例的时候,我们见识过那个嵌套的还不算复杂的,还有比那个更复杂的。那这个时候的话就有一个问题是吧,我们拿这个页面呢,交给美工去做美工。
01:00
美工做美工的时候啊,美工看见这个标签它会比较舒服,因为这个页面本身就是由标签组成的美目,要是看到那个账号代码的话,它就会呃,比较发怵是吧,如果一不小心给你弄。弄没了一个点啊,或者弄没了一个他呀,他也不会调,那这个时候的话呢,这个页面实际上在这个进行分工的时候就比较麻烦,所以说我们希望什么呢?我们最终希望的是这个JSP页面里边只有标签,而没有任何Java代码。哎。再说一遍啊,最终的话呢,因为这个页面是用来做显示的,我们希望这个页面上只有标签。当然可能还会有一些E,但是没有任何Java代码,这就是我们嗯,自定义标签出现的这个原因。自定义标签可以降低JSP开发的复杂度跟维护量。从HTML角度可以使HTML。
02:07
不用过多的去关注那些比较商业的逻辑代码跟业务逻辑代码,就是说这个时候呢,页面上只有标签,利用标签可以使软件开发人员跟页面设计人员合理的分工。那实际上大家以后去做开发的时候,你到每个公司里面,每个公司里面一定会有一个自己定义好的标圈库,比方说我是做这个,呃,金融相关的,那我就有一种金融相关的标签库,然后你直接调用就可以了。将具有共同特性的标签库应用于不同的项目,也体现了软件复用的思想。那我们就写一个标签吧,比方说我们今天上午看到的two里面看到的power values。哎,这个时候的话呢,我会获取这个内幕是怎么获取啊,我获取到之后,这个结果它是一个数组,我们如何完成这个数组的,如何完成这个数组的变历呢?那以前遍历的话,你就得写一个for循环,现在我们想写一个标签,让这个标签帮我们。
03:19
来完成那样的操作,那我先来写一个,大家看一下。嗯。JP。Simple。tag.p。简单标签,这样吧,我来创建一个文件夹,叫tag。所有文件夹,所有标签的话呢,都放在这个里面。Close other。嗯,我为了方便哈,我直接在这里边,我来创建一个卡的一个list。
04:08
实际上我们知道这个customer list应该来自于一个吧,对吧,那我这块我不方便的话,就直接写了list。怕什么?看看吧,等于六。好了,往里放东西,Customer点。打。爱。六。看看行,自个写吧,一。
05:01
Name age。AA。2345。BBCCEE。10304056OK,我把这个呢放到请求域里面。好了。这个步骤的话呢,是模拟里边操作,模拟中的操作,下边呢,我想在页面上直接对其进行,便利好看。
06:00
在页面上。对request中的。Custom。属性进行遍历,打印ID name和H。就这么一个需求好了,如果要是这样一个需求的话呢,我们想一下哈,好了,我们实际创说一下,那既然说呀,这个是请求域里边的,如果要用Java代码写的话,得怎么写,得这么写。看着,我得先获取这个list。我们这样吧,我们为了把这个事说清楚呢,我们不写就不写,So哈,但是呢,这里方我来写个它getp forward,我直接去。ch.DSP。
07:00
这样好一些。这个呢,我是做准备的页面吧。Index thep。你再写一个。Hi PSP。好了,这个页面的任务呢,是他。这个时候看起来呢更真实,就是说我在这个页面怎么样把这个值放里边,然后在这里边进行显示,如果要是不用标签的话,得怎么写啊,是不是得先获取,然后配例啊,我写一下啊,首先搞到一个list customer。Customer等于request get attribute。
08:01
然后呢,进行强转。看然后怎么了,然后再进行遍历if,先判断一下这个家不是空。For循环写一个一个的。好了,然后这么写。我们呢,就不放什么这个table了啊,直接写怎么写啊,点get I。Customer get name。他点H写一个点以前这个代码的话呢,就这么写的好,为了跑起来我得怎么跑啊,我是不是先先运行这个页面,你直接运行这个页面出不来结果吧。
09:12
因为这个页面本身我没有往这个request里边去放属性吧,就是获取的,所以说先跑它这个的地位,目前相当于一个so。用剑跑起来。然后我有一个JSP forward,所以说在这个页面的话呢,还能够获取到那个什么呀,还能够获取到一个一个的这个,呃,还能汇到请求域里边,这个属性值有问题。是吧?好了,诶,我可以获取到,没问题,好了,这是我们用传统的方式,下面的话呢,我们来看一个标签的hellowork,看用标签写是不是真的比这个要好很多。
10:02
这个暂时我先给它住掉。好用标签写用标签呢。我先需要导入JSTL标签库。标准标签库,两个CTRLC,这是GSTL哈,我们现在讲的不是GTL,我们是讲如何去定义GSTL。赶紧来好了,内部里边这个有了哈,然后的话呢,我说我首先需要导入我使用的标签T圈库吗?Pre。UI找着,我用的是核心标签库号。
11:03
C选好了,我们看使用标签库如何来写。C for each。什么呢,是。请求域里面的。Customer,然后呢,我们把它放到这个变量里面,Customer一个一个进行打印就可以了。卡点ID。点。康点H。边。打个标记。好,真好。
12:02
是不是一样的,那你看这个用标签跟这个比代码少了很多,而且看起来更加的优雅。这个看起来更加舒服,这个就是我们要讲的。GST,那么我们在讲GSTL之前呢,先来学习如何去写一个GSTLG如何自己来完成定义这样的一个标签,而且使用,那大家想是吧。他这个标签它会有这么大的能力吗?他为什么会有这么大的能力呢?想过这个事儿吗?是吧,你看。这就是一个小小的标签,这个标签就能够帮我变利,就能帮帮我获取一个一个的属性值。以前我们讨论过是吧,我们在这个这个这个大街上看到一辆。
13:03
豪车里边坐着一个漂亮的女生。首先我就想,这个女人的能力太强了是吧?她能够这么年轻,买得起这么好的车,后来发现她背后一定是有一个或者是几个男人在。支持着他,要么他怎么样,有个好爹是吧,要么是有一个好干爹,要么就是有一个好的老公,说不定,反正那个车你靠一个,我们大部分情况下哈,你靠一个女孩去买,其实挺难的,二十二三岁是吧,特别漂亮,然后完了就能开一个豪车,怎么可能。那我们这块也一样是吧,哎,你看这个标签这么潇洒,他之所以会有这个功能的话,背后应该有什么呀。背后背后应该对背后有个有一个干爹是吧,背后应该有一个类在对其做支撑。
14:02
背后应该有一个类对宇宙支撑,我们看一下哪个类呢?我们找到这个u RA control,点一下ctrl f for each。好了,这就是那个for each那个标签,看标签,标签名字叫for,背后是不是有一个类呀,叫for each tag,就是这个for each tag在对齐做支撑,那么我们也可以来写这样的一个标签,它也可以来完成这样的功能。好了,刚才这个的话呢,就是一个hello word啊,目前还不需要掌握,你知道标签是个什么东西就可以了。回来。说用户。用户定义的一种自定义JSP标记就是标签。当一个含有自定义标签的JSP页面被JS引擎编译成service时,派标签转化为对一个称为标签处理器类的对象的操作,它背后一定是有一个标签处理器类。于是当GSP页面被JS引擎转化为service后,实际上标签转化为对。
15:22
Tag处理类的操作。过来好了,我们看看我们如何来定义一个标签呢?标签API的这个层次关系是这样的。最顶上有一个顶级接口叫JP tag。J标签这个接口呢,有两个子接口,一个叫tag。左边这一针哈,包括这三个接口,两个视线内称之为传统标签。右边这个有一个接口叫simple tag,叫简单标签,那简单标签可以实现传传统标签的一切功能,而且开发起来更容易。那简单标签呢,有一个实现类叫simple text support,我们最终需要继承的是这个。
16:11
Simple text support,那么我们先来看一下这个接口,叫simple。哎,这就是。说实现simple tag接口处理器类,我们需要实现这样的一些方法看,比方说set JP contact set set叉叉叉这个是干什么的?复制属性的set Jack body这块有一个do。这个是simple接口,你先回来吧,我们先按这个顺序先看一下啊。在这儿。开发自定义标签,核心就是编写标签处理器类,这是核心。
17:00
好了,标签的形式呢?有这样的几种空标签。带属性的空标签带属性,这里属性都没有啊,然后是带标签体的,呃,最完整的一个是既带属性带。标签体的。开发的步骤,先写一个标签处理器类,共有这个类还不够,我们还需要一个TTLD文件,TLD文件是谁呀?这个就TLT文件怎么点过来的。这个页面点这个U过来,PLD描述标签库。我们需要去编写标签描述文件TLD,在TLD文件里边呢,对标签进行描述,最后一步在JSP页面导入跟使用自定义标签三个步骤。那首先我们需要的就是这个叫simple tag,这里边的话呢,有一些方法。
18:05
呃,刚才的话呢,我们大致的看了一下,现在我们就写一个,我们写一个没有属性的,也没有标签体的,最简单的一个hello word。点在。新建一个类叫simple t,它需要实现一个接口,这个接口叫simple派接口啊。好了,这里边儿的话呢,有一些方法,有些方法我们看一下大致的先看一下是什么呀。吧,这个方法。如果要是被盗用的话,应该是干什么用的?往里边负一个值,负一个C,附一个JPT对象,所以说凡是set开头的都是往里边来。
19:04
复制一些属性的。都一样啊。每个具体每个具体意义的话呢,我们一会会逐一来说,这个是一个盖方法吧,你写一句话。看orange好了,这会这个不态能想到吧,它是什么呀?实际的标签比逻辑需要写在这个里边。第三读,哎,虽然说我们还没有细讲哈,不过看见这个名字就能感觉到哦。这三个方法应该是由。Service的引擎调用,并且把这个相应对象传进来的,而这个呢,是应该我们自己实现的一个get方法,返回副标签,这个是实际上写标签体逻辑的方法啊,具体我们再说这个写完了,写完之后我们说我们得写个TL文件。
20:08
这个TLD文件呢?我们放在web下描述文件,配置文件吗?我写一个XML来TLD。MYb.TLB。那什么格式啊,好在呢,我们有这个c.TLD,打开往上翻这个逻辑,复制CTRLC过来。好,我们说一下啊,这些的话呢,是必须要有的,这T是是什么呀,这是一个。根节点必须得有啊这些。声明是固定的,好了,Description是什么意思?描述吗?描述TD文件,好,那我这个。
21:08
我们这个,我们这么写,我们是my tag。1.0版本。好了,Gitl call,我是麦。版本1.0。好,以上呢,以上的这些,嗯,你在写的时候没有那么的重要,底下这两个很重要,第一个叫name。还有一个UI。这两个很重要。暂时我这个先写成at硅谷这个呢。这么写3W。艾特硅谷点com my head。
22:03
好了,写完有什么用,我们一会我们结合GP的时候我们再说。然后下边需要什么呀,需要真正的来描述自定义的。Hello。黑包下标签描述吧。Tag标签,标签应该有个名吧,我这个展示就叫。你不是还得有个什么呀。标签对应的class拿过来在这儿。CTRLC过来。周围还少一个,还少个啥。他说这个是不完整的,还缺一个,还缺一个一个什么呀,我们后边是不能看着啊,缺一个body content吧,还提示的好了。
23:10
什么叫?内容类型吧,我们这个是。好了,那相对而言的话呢,这个描述反倒简单,这个第一个叫标签名。幺签。标签。的名,好了第二个。嗯。标签所在的全类名,这个呢,标签体类型。
24:08
标签体的类型empty,好了这就写完了,这里边儿的话呢,这两个我没解释,这个名字有什么用,我也没说,现在的话呢,我们来看一下。到tag里边。来,我来写一个哈。写JSP。叫到P。你过来我们是不是也得导入我们的这个。标签空白文件来导入标签库。实际上的话呢,它就是导入那个标签部的描述文件,他俩。是一回事,实际上就是导入标签库描述文件文件,因为那个标签的信息啊,都在描述文件里边,好怎么写呢?
25:05
哎说哎T你们当时讲这个指令的时候,讲了几个呀?讲了个page,讲了include吧,哎,T里来这块标签库好了,注意看。有个uri。我要去找什么呀?我要去找我所对应的那个TLD描述文件,Out斜杠,大家看是不是好多呀,那我怎么知道去找哪个呢?去照我是不是有一个at硅谷my call啊,后来好了,这样一个perfect叫前缀,前缀也可以自己也可以自己写,也可以用它那个提示,好到这块的话呢,这个uri跟perfect干什么的,哎,应该有一个印象了,然后来写一个。艾特硅谷。
26:00
好,先跑起来看效果。大家看是不是调用这个do tide呀,而且呢,每次都会来先调这个set JSP context,然后调这个do t,这样的话呢,这个hello word就写好了,我们来做一个小结,大家看。基本步骤,先写一个标签。标签处理器类,直接继承这个simple tnk,呃,实现这个simple t接口就可以了,几个方法随便实现,每个方法具体干什么的咱们说。这个写完之后呢,我需要去建一个TLD文件,这个TLD文件啊,它是一个描述文件,或者说是一个配置文件,我们建议把这个文件放在web INF下。
27:01
然后这个描述文件里面有一些固定的这个,呃,要求你直接从c.PLD里边复制就可以了,我就复制过来了哈,然后这么一加,这里边有几个点需要做了,第一个叫放内叫电影。在JP页面上使用的。标签的前缀。就建议使用爱的硅谷回来,对对,你看,比方说我这个,我这样写U去掉。问题。再跑。它还是可以打印没问题,只不过什么了,只不过说我们建议这样用,于是你看哈,我要写一个奥斜杠的话,它是不是就自动提示这个I的硅谷啊,这就是它的作用叫建议使用的,好下一个得过来,还有一个什么呢?还有一个uri说这个作为。
28:20
TLD文件的ID,实际上的话呢,它相当于这个TLD文件的ID,用来。唯一标识。当前的LD文件,然后呢,多个TLD文件的UI。不能重复,然后在JSP页面,在JSP页面的。标签。通过通过。
29:03
通过这样页面的拍个label标签。当uri属性来引用。好了,我们说了这么一个词啊,它相当于这个ID,你过来看我这块的话呢,我说我想去引用一个标签库,我靠的是不是一个uii去区分呢,这么多我怎么知道是哪个OKUI来区分,这就是uii的作用。这个名字是干什么的呢?说使用在JSP页面上使用标签时。对啊,名字,你名字是哪儿啊?在这吗?
30:02
Hello吗?这个是这样式的话呢,整个这个就比较顺了啊,我们简单的画一个图跟大家来说一下。嗯。嗯。这个里边有这样的一些内容。好了,我在JB上用的时候呢,有两个。第一个导入。导入第二个呢,是具体的使用。好,那我们一个一个比对一下吧,这个uri是不是跟这块这个UI对应啊。我画我画一个线啊。
31:02
我就我就不像以前那样一个一个去,一个一个去,对了,这个uri。应该跟他对。他俩是一致的。这是第一种,是一种这个。这应该跟。它对应是吧,这是两个好了,我具体用的时候呢,这个前缀用的实际上也是也是它还差一个什么呀,这还差一个标签名啊,标签名hello这个。标签名。换个颜色好了,跟谁对呢?跟对不对。
32:02
其他的几个很显然不再一个一个说,我们刚才这个过程,我们来做一个小结。二字定义标签,好了,我们说这个hello word的步骤,第一个hello。步骤,第一个步骤是什么来着?创建一个。创建一个。标签无理器背板怎么创建啊,实现接口处就可以了,方法进行简单的实现。第二个在。
33:05
Web info文件。甲。下新建一个点TLD。喂。扩展名的。XL文件,那实际上是什么呀?这是一个叫标签库描述文件。好了X软件,那这个XX文件的扩展名是点PLD哈,然后呢,并。考入固定的部分。
34:02
功能部分都有什么呀家伙。的部分,就这部分吗?Control。CTRLC过来。是吧,然后呢,并对。哪部分呢,面对这个。你要修改一下呀。嗯。Sunny。嗯。UI做出修改,就是第二个见他三。
35:03
第三呢?在文件中。描述自定义的。标。在TLT文件中描述自定义的标签,那怎么描述啊?这么描述呗,CTRLC过来。跟这个是不是类似啊。能理解吧,我不用一个一个写吧,这是名所下处理器的全类名标下几是MP,这就可以了。第四步。在JSP页面上使用自定义。
36:00
标签是这样吗?怎么用啊?分为几步啊?这不这不还这不还有两步啊,第一步使用。发微博。指令导入标签库。描述文件。你需要导入啊,什么导入的不在这儿呢吗。CTRLCC第二步。什么使用吧,使用自定义的。标签怎么用呢?我这里边。是不是这么用的?是不是就这几步啊,大家像我这样写一个。
我来说两句