00:01
然后呢,下边哈,我们就来要看的是这个另外一个solve的积累,哎,叫做model base solve,这个是要解决什么问题呢?你想哈,我们实际上将来这个项目一定是划分成各个模块的,即便我们是一个单一架构的应用啊,它从工程这个层面上,Model这个层面上没有拆分,但是呢,它从这个功能上。从业务功能上面上面来说,还是会划分成很多不同的功能的,你比如说我们。啊,这个登录注册呀,退出这些操作,哎,就肯定还是希望都能够封装到serve user serve这一个类里边,诶登录的请求呢,就找login,呃,注册呢就找register,退出呢就找logout,这是我们最希望看到的,可是呢,如果我们只是单纯的继承HTTPSO,哎,那它只有do get do poose这两种方法啊,那一个处理get请求,一个处理po请求,我们这个是根据功能划分的,也不是根据get或者请求来划分的。
01:01
所以说呢,我们我们就希望呢,能够对HTP呢,从这个方面呢,能有一些拓展啊这个问题,那我们怎么去解决这个问题呢。我们访问user啊,我们都是用同一个地址。呃,都是用同一个地址。嗯。就是说从我们solvel的这个它本身的啊,这个技术的角度来说,你在we部的S包里边去注册了以后访问它呢,就是一个固定的地址,那我怎么能够去区分开他们不同的这个,呃,想要调用的目标的方法,哎,这个时候呢,我们就给它后边附加请求参数,每个请求的地址后边啊,都附加请求参数,你想调哪个方法,就在你的请求参数里边写清楚你要调的方法就行。哎,然后呢,So里边呢,我们接收到这个请求以后,读取这个请求参数,哎,就拿到这个方法的名字,再通过反射啊,调用这个目标方法。
02:01
就行了啊,这是这这是一个我们解决的思路,这个说具体的具体的代码呢,我们就来看这。哎,Model base solve让他继承我们刚才的view base啊,这样间接的就等于也继承了HTTP,然后呢,这个do get do post方法也都给它重写了,嗯,然后呢,当你访问的是do get方法的时候啊,我们去调do post,这样的话就把这个do get和do post2个方法呢,就合并成一个方法了。当然这个时候的话,不知道大家会不会有这样的问题哈。就是说我们HTTP呢,人家好不容易给你分开了,你在这儿呢,又不知好歹的给人合并了,早知如此合并,当初呢啊,你早知道现在你要合并,你当初为什么HTTP要跟你分开呢。啊,这个问题。哎,其实还挺刁钻哈,这个事儿我们大家要这么想。
03:01
首先呢,HTTP呢,他怎么做这个事,我们决定不了。啊,这是第一第一点第二点呢,HTTP它给我们分开呢,其实也是好意啊,如果你有这样的需求呢。啊,如果你需要区分不同的请求方式来处理请求呢,哎,人家给你,人家给你提供了这样的机制,让你能够这个分开来处理,人家给你提供了,你可以不用。啊,你去想啊,我给你他给你提供了,你可以不用,但是呢,如果有一天你想用,但是他没有提供,你是不是很难受。哎,提供了你可以不用,你是不是还你是不是会有一种很富足很宽裕的感觉。是吧,你看苹果手机,它后来不给你提供充电器了,你是不是很难受?是吧,这个道理就很简单呀,我可以不用,但是你不能不给,所以说你看这个时候HTTP人家不是做的挺好的吗?啊,你你用与不用,我尽可能的在我这个层面上,我给你提供尽可能全面的支持啊,他要面对的是通用的啊,就是说很基础的,很通用的这个环境啊,这个这个这个这个场景啊,他要尽可能的考虑的周到一点,你用的时候呢,根据你的这个需求,你去做一些简要的调整,这不就是哎,两方面都能够兼顾到吗?
04:18
啊,所以说在这儿的话呢,我们要呃思维呢要开阔一点。合并起来以后呢,下一步我们说啊这个。呃,这个方法声明不用多说了,都是重写的附类的方法,然后呢,这里边啊,下一步这是设置一下读取请求参数之前设置一下字符集啊,避免字符乱码问题,然后呢,我们就要求了啊,这我们固定就是用method来作为啊,你想调用目标方法的。方法名的请求参数啊,你你想叫哪个目标方法,方法名就叫method啊,就是请求参数的名字就得叫method。哎,然后呢,获取当前类的class对象。哎,因为这个时候我们说哈,在子类当中,这个真正真正执行这个代码的呀,是子类,子类对象调执行这个代码。
05:09
啊,那么子类对象呢,它获取的呢,就是子类的对应的class对象。虽然说这个代码写在父类里边啊,但是真正执行是在子类里边执行的。哎,然后呢,然后呢,当然子类的class对象,当然能够找到子类里边声明的方法。所以说呢,在这儿我们看啊。Class,哎,调get declare method,根据方法名啊,根据参数列表去得到对应的这个方法,哎,呃,然后呢,设置方法是可以被访问的,然后呢,去通过反射去调制方法,哎,就是大致上是这么一个流程。呃,因为我们子类的方法呢,也会啊,完全有可能用到request response啊,所以说呢,这声明子类方法的时候啊,这两个参数呢,也这两个对象也必须作为参数传进去。另外这儿还有一点很重要哈,就是这个部分。
06:02
哎,我们把刚才这儿有会有一个提示哈,重要的提示。给他拿过来哈。说这个地方啊,重要提醒,为了配合transaction filter实现事物控制,不获得异常,必须抛出,这个我们前面说过了啊,Filter呢,Filter service service到do中间任何一个环节执行的过程当中,如果有抛出异常,结果被你给抓住了啊,被你给抓住了,比如说我们就do这边抛异常,哎,抛到这儿他抛出来了,抛到这儿结果他没有往外抛啊,他在这儿给你抓住了,对filter来说,他还以为没有出问题了啊,那么你这个时候do这边出的问题他就没有感知到,本来该回滚的时候它就不回滚了,所以在这儿的话,这个异常呢,必须要给它抛出去啊,封装成一个运行时异常,给它再抛出去。
07:04
这个类呢,也是我们大概看一下知道它啥意思啊,然后下边呢,也是咱们就直接给他去建出来就好了。哎,和我们呢,是放在一起的。哎,粘过来哈。哎,下一步就是各种打包。好,呃,再看啊,往下找method。好啊,呃,然后呢,这个它所在的位置,我们截个图。
08:00
26。哎,建好了以后呢,给它放在这个地方。好,嗯。这个我们说一下他们之间的这个关系。将来我们负责执行具体业务功能的啊,具体各个模块的,具体的solve是继承model base model base呢继承的是base base呢,继承的是HTTP。啊,是这么一个关系啊,你刚才呢,如果像我这样操作的话,他们俩之间的关系,包括他们俩的关系啊,这都是已经呃建立好了的,我们以后呢,我们的具体模块的service继承model base就行了。啊,我们。
09:01
建这个只要继承它,别的就不用管了啊。
我来说两句