00:00
好,我们写的这个啊,标签没有标签体对不对,这个其实我们见过的标签里面大多数都有标签体。那么,如何定义有标签体的标签呢?咱们再来看看例子。嗯,咱们这样这个啊。有标签体的。我就叫tag吧,标签体。哎。这个呢,我先写需求,我的需求是什么?
01:04
看着啊,我这目标想实现一个。这个怎么说呢?小写变大写还是小写变大写?然后CT冒号,我这个叫。嗯,Lower to upper就叫他。这里边儿,比如说我这写个ABC。我这写个ABC。诶。他就能给我输出,这边就会输出大写的ABC,当然了你也可以这样。我这来个name吧,Username等于power node。
02:02
当然,我需要把这个username给它放到预里边吧,Page can test.set attribute username username,对吧?然后这边给他显示。You'name。第二个东西。就实现这样的功能。那怎么做呢?自定义标签呗,是不是我们按照前面讲那个例子啊,利用思路来写,那首先我们肯定得定义一个。定一个标签处理器对不对,我定一个标签处理器啊,这个叫什么?嗯,Lower to。
03:04
Upper t。可以吧,继承子。Simple tag support。好。重写都。Tag。重写do tag,你注意我这儿想让它显示出来什么,将来我运行啊,想让它这边显示出来,就是这个北京,像这这个直接显示就是大写的北京power node这儿直接显示的就是大写的ABC。对不对。那这样的话,我得想想,那我就得获取到什么。
04:04
标签体。怎么获取标签体?标签体我们在这儿不是说了吗?或者我直接看这个吧。这个里边。我是不是可以通过。Get。JSP给他获取到JSP。代码片段的,这个代码片段指的什么?其实这个代码片段啊。刚才给大家说了这个代码片段指的是,呃,如果这是个标签的话,指的是这个东西是吧,确切的说其实就指的。这个才是标签JSP。是不包含这个标签的啊,这才是。哦,这才是,那要获取它,那这我现在会了,我是不是直接就获取到这个。接着是不是就可以了,那OK。
05:04
This,这是获取。嗯,标签T对象,this.get JSP。这J啊。嗯。他返回支持JP fragment。哎呀,JSP fragment这个对象。我们不了解呀,它获取的不是个文本啊,你注意它不是个string字符串,它获取的是个JSP fragment,这个东西我们不了解呀,打开API看一下。JP fragment。它里边就俩方法是吧。就俩方法看这个,这是获取JSP,这是获取那个JSP contexttest是不是就是那个配置contest呀,这不用多说了,看他这儿in VO是干嘛的。
06:08
Execu the fragment是不是执行这个片段,And direct all output to the writer。这不指向吗?是吧,导向指向所有的输出到哪啊,你给出的writer。这输出流啊。什么意思呢,他的意思啊。是说。会将这个标签内容写入到你给的这个流。哦,这样的话。那这样吧。我这儿要将。标签体。
07:02
内容写入到哪儿呀,输出流。那GF.look输出流我们现在是不是没有啊?没有我们可以获取啊,怎么获取。我们不是通过那个JSP。叫什么呀,那个JSP contest是不是可以获取到,所以我get GSP contest点直接get什么out。这是不是就获取到的就是一个out呀,所以我这是获取标准输出流好,然后我把。标签题内容是不是写到这个标准输出流里边了。
08:01
先这样写啊,我们先这样看看效果,先看看效果,有的人说这个怎么怎么就小写变大写了,我们现在还没有小写变大写,先看这会执行一个什么效果。再说其他的好。暂时性的啊,我们这个标签处理器是不是就定义完了。定义完了需要注册呀,在这儿呢吗。对不对,打开它注册。这个叫什么名字,我就叫。Lower to。Upper吧,就叫这个。当然了,这个。类名。我得换了呀。
09:01
是吧,注意这儿。还能不能写?这个。Em。能不能呢?肯定不能写了,现在有标签体了吧,那该写什么呢?那我们看一下他能写什么?Out加问号。发现这儿是不是有四个值啊,1234是不是,这都是什么意思呢。我们一个一个来说一下啊。先说第一个empty,这个我们用过了吧,表示当前标签没有标签体。对吧,然后还有什么。
10:03
叫个JSP是不是先不说它,咱们先说它这个是script。Script。Script是什么意思啊?Javascript是什么意思?那GS啊,那GS是什么呀?Java脚本的script是脚本的意思啊,List呢,是不是否定的,它的意思是。标签当前标签表示吧,写上表示当前标签首先是具有标签体。但该标签体。中不能出现Java脚本。
11:03
什么叫Java脚本?什么叫Java脚本?这样吧,以括号方式来写。那加了脚本不就是我们说的加吗。代码块。还有Java。表达式愉快。在这,它不能出现Java脚本。答案这里边儿不可能出现。那个不是加了呀。GP表达式是吧?当然这里面不可能出现什么呃,GP的声明语句啊。诶,这个标签表不能出现这,但是你需要注意。但可以出现EL表达式,这是需要注意的,它是可以出现EL的,好,然后这是不是还有个JSP啊,我们在家不是看到了吗?是不是有个JSP。
12:17
有个tag pen tag d喷,没写错吧,Tag depend,看看。Tag是吧?这俩又干嘛的?这个已过时,原来的时候啊,我们要定义标签处理器,它不是像我们现在这样干嘛的,继承的single。Type support这个类,或者是实现single tag这个接口。
13:04
它是什么呢?它是这个。他是。要么你这个类实现tag这个接口,要么。你继承自tag support这个类。你看它tag support里边是不是实现了tag这个接口啊。这是什么?这是什么时候,这是我们说。接着屁。2.0以前。我们实现自定义标签,实现这个我们定义这个标签处理器的时候。用的是那种方式,那个时候这个是起作用的。它的作用是什么?其作用是其作用。
14:00
其表示吧,直接还是表示吧,表示仍然是表示当前标签具有标签体。将标签。T内容原样显示到。浏览器,它的意思就是这个。但这个过时了,现在已经不能用了啊,现在我们用这种方式定义的。这个标签处理器已经不能再使用这个,所以它不仅仅是已过时啊。不能用。现在不能使用了,它不仅仅是过时了,一过时是还能用的,现在已经不能用了。
15:07
那这个是干嘛的?就起这个作用。现在用的是它表示当前标签具有标签体。将标签里的内容原样显示到浏览器。无论标签体中写的是。这样吧,即使吧,不要无论了,即使标签体中写的是也不会。对EL进行计算,它就是原样显示。就是原样显示。那我们现在来看的话,我们现在定义这个to啊,定义的这个东西。
16:03
首先不能用它,这个也不能用,只能是这两个,对不对,只能是这两个,这两个我们现在用谁要用它呀。为什么,你看看我这个需求里边这儿。是不是要对这个医药进行运算的呀。对不对,要把它换成它的值,北京power note呀,所以我这里边能用的只有这一个。Sc Le。OK,注册也结束了。这个标签库已经导入了啊,这就不用再导入了,我现在就直接用就可以了,当然服务器需要重启。有。听到吧,Debug就是debug吧,反正我们也没加断点。我直接哎,错了。
17:00
还真是错了,我们项目已经换了。是不是我们项目已经换了啊?Run。是不是这出了个ABC,出来个北power not?对吧。只不过现在的问题出在哪儿?现在的问题出在他没有变成大学,一步一步来嘛。OK,我们现在已经知道你这个JSP fragment指的什么。就是这个。标签体的。这个标签的标签体。就知道就是它了啊,而且我们也现在看到了,是不是这个E,它能够解析啊,一会计算啊。
18:06
OK。哎呀,那现在要要要要实现这个功能啊,什么功能呢,小写变大些。如果要是小写变大写的话,你就得获取到这个文本呢,获取到这个string字符串,然后调用字符串的。是不是这个。To uppercas啊。嗯,那这个怎么做呢。这个应该怎么做呢?诶,这里边儿我们需要使用到另外一个类。哪个类我们打开它啊,这个类叫做writer。他是个。输出流。对不对。
19:00
它里边有一个方法叫做to string。你看看他的解释是什么,你字符串的形式返回给返回该缓冲区的当前值,也就是说你这个流里边的数据我会给你变成字符串。我们现在要的是不是就是字符串啊。就是用他的。那要用它的话,我们得看一下啊这个。这个这个。午餐不到气吧?啊,我们通过无参路由器可以构造出来这样一个。这样一个东西。那构造出来以后,怎么就给它写进去了呢?End。是不是可以把这个数据给它写到里边。然后呢,我就可以获取了,也就是说其实我们做这个工作啊,就用这个string writer干嘛的把。
20:07
我们的对象给他添加到这个东西里边,它会把这个对象给我们变成。变成字符串。就这样一个意思。就这样一个意思,那我们现在就来写这个东西好。说写就写吧。那给这儿吧,我给这儿。我你有一个。对吧。SW吧。然后SW点呀,End坏了。那append那怎么往里面加呢?End,你看。
21:01
加不进去啊,在这字字字符或者字符串啊。前sequence吗?字符序列就是字符串啊。他这这创建了他以后怎么办呢?怎么给他弄进去呢。怎么把我们的数据给他弄到这里边儿呢。不好办了。你不要忘记。我们的JSP fragment有一个方法叫invoke呀,他是不是可以把这个对象给它写到流里边呀,也就是说我们这往里边写的时候,不再往out里边写了,写到哪儿,写到SW里边。这时候SW里边就有数据了,我要想获取这个数据,怎么获取sw.to stream,这就是我们的要获取这个字符串内容。看吧。这就我们这content,然后我们就可以。
22:02
Content点。Two upper keys。不这样写了,还叫content。现在是不是已经小写变成大写了,然后呢,然后再把这个给他。写到标准输入流嘛,标准输入流是不是在这儿已经有了。这是标准入流。有了以后给它写进去就行了吗?所以我这儿就不写它了。已经有了标准输出了,我就直接点。啊,喷的也行。是吧,Right也行。啊。
23:03
这就OK了。现在这就给他搞定了,所以这儿啊,我添加一个注释,这是什么?嗯,创建一个。叔叔,刘该刘为啥要创建他?该留。中的内容。可通过其to string方法获取到其文本。形式,我们主要是要他这个东西呢。然后将标签体内容是不是写写入到输出流啊。这个呢?将输出流中的。
24:01
内容。怎么这是?或者这样说吧,文本的形式,以文本的形式获取到输出流中的内容。再往后小写变大写是吧,再往后呢,将。将转换为的大雪。内容写入到这才是标准输出流,这就OK了。行不行?我们跑一下看看。
25:00
重新发布了没有,咱也不知道。我们。好,我这边刷新走。没问题吧?是不是这就实现了?这就实现了。哎,这里边儿通过这个例子啊。让大家掌握两点内容,第一,JSB是什么?是标签体。对象,哎,你要知道标签的对象指的是谁。第二。就是注册标签的时候,Body content里边填的值各是什么意思?通过这个例子,主要是掌握这么两点。OK了。
我来说两句