00:00
好了,咱们继续啊,上节课呢,我们说了一个重点啊,这个重点呢,就是这个method怎么去调用方法,有一个invoke啊好了,咱们再来一个。再举一个例子,咱们再出一个EGOV啊,大家看看今天上午就就没怎么做项目是吧。是吧,咱们就讲一下反射啊,这一块来一会我封装一下啊,封装的时候有点难度啊。来咱们分类式啊,这边的话我就再来一个吧,再来一个包吧,这个包的话就写个B吧,啊,然后这个B呢,里面写一个类吧,这个类里面写点属性啊。这边呢,加上相关的大概的方法来选上OK啊。好。是这样的,我这有一个类user,然后里边有属性,有塞盖的方法,接下来呢,在这个第六个例子里边,我写上一些东西啊,我写上已知条件啊,已知条件,已知条件这事呢,有一个类啊,满足加并规范类全名。
01:22
满足加宾规范啊。类满足加变化还有一个条件,什么条件呢,就是。该类的完整类名你是知道的。啊。就是他。关了啊,就是它第二溜,第三个呢,就是我现在只告诉你这些信息啊,然后做一个东西出来。现在这个这个你都不知道啊,这个都没有给了你个class文件,现在你只知道一个什么呢?这个类满足加B规范,有什么无参数的构造方法吧,属性私有化,对外提供公开的C和better吧,啊该类完整类型是这个啊三该类呢,该类中有一个字段啊,Fail,该字段的名字是user name来继续。
02:36
Username属性类型是java.long点类型啊要求写上啊要求要求是通过反射机制给U类型对象的username属性赋值,Jack怎么写?
03:10
已知条件是它是加va b满足加宾规范完整类名知道,属性名知道,属性类型也知道吧,然后现在通过反射机制给一个U类型对象的u name属性赋值。其实说白就是通过反射机制,你给我教一下哪个方法呀,对对对对对,就是set什么,就是那个方法吧,来这边我写上已知条件啊,已知条件是class name。这个类名我写上,因为这是已知条件嘛,是吧,来把它拿过来是不是放到这啊好,那这样的话再来知道不知道属性的名字,属性名是什么name吗?Name属性的类型知道吗?属性类型是啊,属性类型是一个class。
04:01
呃,属性的类型,它是一个认点什么啊是吧,你看啊类名知道。好,类名知道,呃,属性名知道啊,属性名知道,属性类型知道吧,类型知道。然后还有啥。来方法面怎么得拼块吧,咱们拼块。属性名首字母大写对吧,然后加set吧,Set加上谁。方法名是这个吧,是属性名这个这个这个这个属性名还是字母还是大写是吧,怎么让这个首字母大写啊。第二。Two upca,旋转吧,点圈at几零,再加上什么?
05:08
点什么stream吧,从一开始截行了。Set对着谁?睡吧,嗯。这个全部大写吧,取第几个,第一个吧,是这个吧。Subsre截从哪个位置开截啊,就是这个单词啊,从这个位置开始截是吧,U是不是不要了,所以后边是这个的。能看懂吗么?这个看不懂的话,你下去自己琢磨嘛啊这个东西没什么,就是串的一个编辑啊,一个拼块好方法名有了怎么办?怎么写,开始写了啊class点什么for name为类签名是什么class name返回一个什么class c对吧,C有方法叫行一条,我先抛出去吧,啊你现在类名有,属性名有,类型有,然后方法名有了,接下来呢,咱们这写上啊,这是已知条件啊,已知已知条件,然后下边这个是什么是。
06:28
得出什么方法名吧,拿出方法名之后呢,这是获取什么获取类型吧,获取类型啊,获取整个类的字节码怎么获取,获取到之后呢,获取什么获取方法的字节码了,怎么获取方法字节码c get declared method对不对?这个method方法名是什么?名method name,然后这个方法有参数吗?S的方法有参数啊,而且是string类型吗?所以这边是不是可以把这个属性的类型放到这。
07:03
你这是string吗?那放到这,那这样的话是不是就可以拿到谁了,Method吧,叫set method吧,Set方法好拿到set方法之后呢,接下来调吧调用啊set方法全部调。Set method有一个方法叫in work in work调用这个对象,这个方法传递哪个参数,它说负一个什么值。Jack吧,数量Jack就行了吧,调用哪个对象,是不是少一个对象啊,对象可以造出来了。c.new instance返回一个object了,这个调的是无偿构造吗?返回一个什么类型啊,U吧来U吧U啊,那这样的话,这个U是不是可以复制一下放到这了。放这行不行可以吧,当然你要是不想转是不是也可以,不想转的话,你就直接访问个什么就行了哦这样吧,好放到那这样的话,你就这也可以啊,这个完成了吧,完成了有效果吗。
08:13
没效果啊,就运行完了没效果啊。你要想有效果的话,你还得获取什么,获取username属性的值吧,这个就直接get了啊object对吧,强数成什么用是吧,这个第二方法吧,第哪个方法咱直接掉了啊,点get什么行了,来看看有没有是不是get啊于行。改改啊,ABC。反正这个是能附上去的是吧,要是他附不上的话,下边是不是得不到啊啊,所以这个能附上去行这就可以了啊,咱们主要看上面这个set方法啊运行。好了可以了,好了,这样的话,咱们这个反射就算回顾完了啊,下一周呢,把这个好好看一下,行,我就关了啊。
09:00
第25版本。再回到这儿啊,第一节课说这的问题了,第一节课咱们做了一个查看投资人明细吧,另外的话还有就是第25版本,咱们还还还没有写呢啊这边这个程序的话是一个第一个代码没有得到复用,对吧,第二个是不是没有一种面向对象的感觉啊,所以咱们来解决这个问题啊,用什么来解决。反射机制。我们能不能自动写一个程序,我们写一个程序,让它自动从request里边取数据,并且把这个数据取出来之后呢,设置到某一个Java对象中。也就是说这个对象的数据的处理呢,不用我们程序员以后写了,只要通过反射机制把这个东西给我拿出来,拿出来之后呢,给我准备一个对象,把这个东西放到对象里边。可以吧,我们目的只有一个,为了代码复用吧,好,一起做一下啊,看行不行,第二种版本打开打开,以谁为例啊,就以它吧,行吧。
10:05
这个里边不是稍微多点吗?Get get get嘛,这都是吧,但是你要记住啊。这几个里边有有两个不是从网页上获取的。哪几个呀?最后这俩了,这个不在网页上吧,剩下这几个都在网页上对吧。所以这个你看方法有区别,就get密get旁密上吗?这个没有了,这个也没有啊,所以呢,咱们这个封装只对上面这个起作用啊,对下面这个不起作用,明白了吗?好,我这写了啊,怎么写固定。这都属于什么对象?这是谁的属性?投资人吧investor I你个什么?Investor吧,你程序员的任务只需要你对象,对象扭完之后调一个方法,we.make request to object,把request里面数据给它设置到什么。
11:18
Inv对象中即可。这个类写了吗?没有这个方法写了吗?没有呢啊,这个都还没有写呢。呃,我先表达一下我的意思啊,原先是get get get,如果有100个的话,大家想一想,这个是不是得写100行,太麻烦怎么办?咱们准备一个对象。然后呢,只要调value这个工具类的,Make request啥意思,Make to什么意思?就是把这个request里面对象的数据是不是都是从request里面取出来的,放到什么对象中啊,放在object里边吧,那这样的话就是这个方法是不是需要两个参数啊,一个是request,一个是什么。
12:00
对象嘛,这不对象准备好了吗?传进去好,那下边就简单了,当然这个没办法,这个呢,你还得干什么。还得写,因为这个不属于这个范畴嘛,好,下边怎么办?面向对象吧,表盖的什么?是这个吧,这个吗?一样吧,面向对象这个对吧,来这个。这吧,这不都get就行了,你不用管其他的啊,你只你只要get就行了,Get email,你这是面向对向开发吗?这个吧,Get啊remark吧啊下边的能get吗?不能啊,因为下面两个是不是没有在这个范畴范畴内啊,但是你要想你要想想做的话,也能也能怎么做呀,也能自己手手动付一下吧,有点扣能能不能手动付啊也行啊set吧,叫什么r get吧,但是意义不大啊,你说你在这set上去。
13:09
完了之后在下边再再再盖出来。现在还不如直接用变量的是吧,那行,咱们就用这种方式啊,Get r1的,这样看起来可能好看一点,下边是不都是对象。是吧,下边的都是对象啊,都是面向对象开发,下边的话咱们就手动付一下吧,啊,这个你一定要附上去啊。这要不但是手动复一下,这不行啊,要注意这个事,这个功能它不是这么讲的,不是特别强大的啊,他说把所有数据都给它设置好,他只能是管哪管哪块啊,管管这个request对象里边这个东西。能理解吧,好,那这个方法是不是没写这个类是不是没写啊好,写一写这个类,这个类呢,咱们就U吧,U下呢,咱们写一个类啊,贴过来叫web吧,然后web u呢,这边呢,咱们写上这是一个web工具类啊。外部工具类下面呢,就提供一个方法,这个方法首先是公开的静态的,然后呢,方法呢不反馈任何,只是方法名最好别写了啊。
14:10
把这个复制一下吧,这个方法需要几个参数,两个,一个是什么htpp serve,什么request,还有一个参数是什么object吧,好这个啊,作用,这个作用是将request对象中存储的表单数据设置到什么加了对加va变对象中吧,将变对象,这是什么?含有表单数据的什么请求对象吗?这是什么嘉定对象吧,好,就用这个方法,将来把这个方法一写,你就轻松了,以后啊,管它这样的字段有1000个还是一一百个。我不用写那么100行,我只要你一个对象调了一个方法,它自动数据,是不是就把这个request的对象里面数据放到这个对象里边了,这这这多方便啊,代码不用了,以后不用不用不用写这个了吧,不用写它了啊。
15:09
好怎么写,这这边怎么写,这个怎么写。难点在这个方法里边。这是个对象吧,这个对象是那个什么对象啊,是不是投资人investor吧?啊,投资人investor吧?啊投资人我先写上啊,我这么写,写上之后呢,是不是叫in这个set方法呀,Your name吧,就拿其中一个例子吧,啊,Your name,你想一想,像这种代码我们能不能通过反射机制来写?调色的方法能不能通过反射来写?这个是什么数据啊。这是不是request叫get了什么in吧,是不是写上它来我我我先把伪代码写上啊,以后呢,我们肯定不会执行这个代码来我我我的任务是把这个翻译成反射。
16:08
现在你要是这么写的话,是不是就写死了,你想想这个方法你是专门为谁服务的?是不是investor了,所以咱们咱们先这么写吧,啊,需要哪些我就先给他设置一下了啊,看看哪些啊,来这个都给他拿过来放过来,放到这放到这看着啊来这边看看他还需要调什么方法啊CT吧,嗯,还需要调什么。哎,这块我是不是可以从下边复制啊。我从下面复制得了啊,我想表达一下我的意思啊,我的意思是什么。有。这还不行。你就在这调吧,啊调得了,这个有了吧,这个也有了啊,继续env调side什么org code吧,安V调s contact吧,安叫S的一个contact是吧,好嘞,接下来安叫S什么email吧,还有安叫S什么mark吧,好,这边够了吧。
17:07
好行,这个怎么办?是不是也是从蕊块里面取出来的筷子get parameter啊好,这边咱们复制一下吧啊放到这儿放到这儿,放到这儿,放到这儿放到这儿啊好嘞,这边剪了,放这儿剪了啊剪了。总之啊,我的意思就是这个意思,我助教。上面代码用反射完成,明白吧,这意思。哎,我问大家这个的意思是不是从快里面取数据,是不是把数据放到这个对象里边,现在只不过我们不这么写,我们是不是把上面代码翻译成反射呀,怎么翻译?
18:15
通过反射调方法,我不刚讲过吗?怎么写?来class c怎么过去class点方有这个方法吗?这个方法需要个类名吗?这个类名没法没法拿。所以你不要这么写了啊,这么写不好,你直接叫他呗,他是对象吧,它有一个方法叫什么get class是不是讲过?你别老师不是一直写class name吗?换个方法不会了啊,这不行啊,这边换成什么点get class行不行,好继续。第一步完成了,第一步是干什么?第一步是呃,获取整个类的什么,整个加B这个类的字写码吧,啊字解码好拿到之后,接下来下下面拿什么。
19:11
获取什么?获取要调用的方法吧,获取要调用的什么方法啊,要调用的方法名,或者或许要要调的方法吧。获取就调的方法,Matter了吧,That matter了吧,好,这个怎么怎怎么获取不好获取吧。这个C里面不是有个方法刚才讲过吗?C的盖的什么?哎,你看这这个matter了吧,好方法名需要吧。哎,方法名需要需要方法名还需要参数吗?参数类型能定下来吗?所有赛的方法都是什么类型,都是几都所有赛的方法都只都只有几个参数。一个参数,而且我们定下来啊,这个先写死什么类型行吧,好。
20:05
所以这边我们这个是不是有要求,要想用这个有什么前提,要想使用以下工具方法啊,有前提,前提一是什么Java定的属性类型,需要是什么死证类型,这是属性类型,明白吧,还有没有其他的前提条件,我们要用这个的话,你看我这写死了吗?有没有可能现在在这个Java bin里边有一个int类型的东西。有可能吧,那那先不用管了,但是我现在都是钝吧,所以我这边先写死吧,先写个死钝点class行不行,所以我上面说了啊,要想使用下面这个工具方法的前提,前提一就是属性类型是死质类型才能写来继续这个方法名怎么获取,所以要不要获取方法名来,方法名怎么获取啊,死人类型的method name这个怎么获取不好获取,你只要把方法名拿到就行了。
21:14
发明什么这个?啊,是这个方法不是吧,你要写这个是不是写死了啊,这个也不行吧,你写它是不是写死了,所以这边的话得是动态的。是吧,所以这边的话先获取什么,获取属性名string类型发个什么,那白如果这个属性名是一个什么CDY的话,下面那肯定是什么set c dy是吧,所以这个怎么写啊,还记得吧。啊,点什么two up,点什么car at,零加上什么啊,点什么sub string1,是这样吗?好,这个数签名怎么回事?数签名怎么回去?
22:06
就你理解我的步骤吧,原先的时候这个干什么,一个也没有啊,我是不是先写的这个。拿到类了吧,拿到类是不是拿方法,拿方法的时候需要方法名吗?所以我就推出一个什么。方法的变量,方法名写上方法名,要想造出来方法名得有,得有什么属性名,所以属性名就有了吧,但这得动态吧,这是不得动态啊,动态属性名怎么写,怎么获取?属性名是这个名吗?这个名是不是就是属性名?好,我问你这个属性名跟网页表单里边的那个form标签的input标签的name一样,不一样。放表单。里边有一个音符的标签,音符的标签里边有一个name幕属性,Name属性后边这个值。
23:06
跟这个对象的这个名字,这个名字一样一样。我当时在开发的时候是不是是一样的。我不是随便写的吧,所以我问你是不是可以调用request的对象,这个是请求对象,请求对象有个方法大家以前学过,叫get parameter names。哎,还记得吗?UI问号your name等于什么33AND什么user password等于123AND什么interest等于什么运动and interest等于什么music行不行?好,大家还记得吗?这个所有的数据都存储到request对象的集合叫什么集合map集合中,而这个mapb集合有K合value,这个k value都是什么类型?K是等号,左边的是K吧。
24:05
等号Y6是什么?是个一倍数组?是吧?那现在我问你这个方法答的是什么?所有等号左边的吧,所有等号左边这个名字是吗?好,我问你这个名字是这个吗?等号左边这个东西是这个吗。而这个恰恰又是谁?是不是属性名,所以大家就得得出一个什么结论。写了这么多,它返回一个什么?
25:06
所有自尊的名字吧,所以前提二是什么?要想使用这个前提二是什么?必须保证Java b的属性名和网页表单中的input标签的什么name属性值什么相同。所以要想用我这个工具类中的这个方法是有前提的,这个方法是不能随便就用的啊,有前提,这个前提是什么?这个Java b它里边这个属性的名字不能随便写,这个名字必须是那个form表单里边的into的标签的name,这个属性后边这个值,如果这个是ABC,这个就必须是什么ABC。如果这个是叫什么inv name,那么这个就应该是什么inv name,明白我意思吧,你现在拿到这个就相当于拿到属性名啊,你拿到什么,这是个集合对吧?这是获取什么?获取所有这个所有网页中表单。
26:14
所有网页,呃,所有表的,呃,或者是获取表单中所有input吧,所有input的标签name属性的什么值?等同于已经获取了所有,呃,获取了加B中所有的什么属性名了啊,拿到之后你是不是开始循环了,怎么循环。点has more.next是吧?拿到的是不是就是file name啊?我说你这是fair name吗?这个对的,是这句话吧,来把这个减了啊,注释减掉放到哪啊,放到这吧,好继续这个删掉吧,下边有了吗。
27:12
是不是难类?拿到类之后呢,获取所有的什么。加了B的什么属性名,拿到属性名便历吧便利拿出其中一个属性名吧,属性名拿到是不是能拼成方法名?方法名有了之后是不是就可以获取这个方法了?好拿到方法之后干什么调用代的方法怎么调?刚刚讲过点什么,Info调用哪个对象?是这个对象吗?就要用这个对象的哪个方法,这个方法吧,这个方法有返回值吗?没有传递的参数怎么办?S的方法的参数是这个吗?
28:01
Set方法的参数都是从request里面取的吧?这怎么办?Request get,这写什么?很完美啊。恰到好处吗?嗯。行吧,想吧,啊,给你一分钟时间想看,能想明白吗?重点看最后这个为什么这么写啊。
29:14
往这看你能看明白了啊,这个setmark对的是谁。下的呢?嗯。那这个这个是赛的方法吗。你这个方法关联的名字是谁啊?是这个名字吗?那你这写什么呀?来来拿一挪看啊,这这这这是什么?是name吗?来,那这个set的方法在方法名叫什么?是set name吗?这个是下name是吧?好,那是这个啊,那么请问这个方法是对的哪个方法?是不是就这个方法,那我要调set in name啊,调set inviv name。
30:06
他写错了啊是吧,That。那你这要调一个set I name,那个set方法对的是谁?对的是我们这个set IV name,而你现在调调的是哪个,就是set IV name这个方法,你调这个方法的时候,你需要传一个什么参数。是不是request get parameter,这写什么?是吧?因为这个name。正好和这个Y不是对应的吗?所以这边的话,咱们改一改叫filed name,有了file name就有了什么master name,有了master name,咱们把mastername干什么传过来获取这个方法吧,然后是不是调用这个对象,这个方法传递这样的参数吧,这个参数咱们改一改,改成通用的啊,发的内。
31:17
行吧,这是不是有异常,异常怎么处理?好,有两种方式,第一种是把这个全括起来,加一个词拆开。是吧?这种处理方式有问题吗?分析啊,分析以下处理异常的方式有问题,这种方式有问题吗?来一起看一下啊,我举个例子,我相信大家应该能想明白这个东西,来打开建立原型。
32:06
一起分析一下啊,看谁呢。看这。这个里面有几个框。五个吧,这是不是在网页上,在网页上有一个有几个框啊,有五个框吧。好,一起分析一下,点右键啊查看原文件。这五筐分别是谁?第一个?用户代码这个时候会拼成一个方法,叫什么set u边什么扣板,有没有这个方法?有吧,来继续看这个。这个会拼成一个方法吧,这什么方法呀,Get user name好,继续往下,这个密码会不会拼成一个方法。这个password会拼成一个什么方法?
33:00
The user password吧,嗯。
我来说两句