00:00
才使用啊,就是你们下来呢,自己按照那个视频呢,把那个我们的工具先安装一下,如果没问题的话,那么在你们的这个桌面上就会出现一个一个小图标啊,这个Rose的小图标,然后呢,这个小图标呢,你就点击啊,点击之后呢,就是这个rational Rose,然后呢,打开以后,它会有一个呢创建模型啊,咱不是建模工具嘛,它会有个创建模型的一个操作,这里呢,你可以点击OK点一下。你可以点点OK以后,你会发现下面呢,会加载很多的内容啊,加载的这些内容咱们一会儿再说啊。嗯,好了,加载完成以后啊,同学们可以看啊,你会发现有什么东西啊。是不是有一些包的感觉啊,什么Java呀,Java X点是吧,还有org啊,你看大家看左上角这个怎么写的。是不是叫做类图啊,这就是类图啊,所以咱们刚才这样说了吗?来往这边我们画图的时候,这边就会有个类图,只不过我们这没有包的概念,为什么呢?这里是没有包的,而我们在当前这里面是有包的概念的,诶老师呢,既然有包的概念的话,你这什么包啊,这个就是我们JDK自己的包,他自己的包就引入进来了,那么他自己的包里面,咱们最常用的Java中的包应该是Java点浪对吗?所以打开Java双击。
01:21
双击以后你看怎么了?这就是我们JDK当中的Java浪,你看在这儿还有一些别的包啊,不看了,看这个Java浪,Java浪里面都有哪些类啊,你们之前学过的。啊,是很多。是不是很多啊,最起码什么string啊,对不对,包括什么呢?我们的double那些东西不全都是Java浪包里面的吗?所以我们双击一下来双击双击以后。诶,这看不到了是吗?来我们点一下这个地方,来我们点Java Java浪啊,然后呢,里面有个叫做类图打开,打开以后大家看怎么了。你会发现这个就是我们Java浪包里面类的一个类图啊,就是这样的,你们看这个应该知道吧,有个叫做A对吧,然后呢,往这边看,这边都什么东西。
02:08
我们今天提问了是吧,提问什么了?运行期异常和边期异常吧,那么这里是这什么异常,运行异常里面包含什么。之前有个同学说说了这个异常了。我问他,我说咱们那个编异常,你举个例子吧,说的类型转换,大家看一下这个叫class,他是谁啊?是不是run太except啊,它叫运行其异长,不是我们的边其异长嘛,所以通过这个图形你就能马上看出来,诶,他们到底什么样的关系,还有什么呢?你再往下看,下面就是我们常见的了,什么东西啊。String class object,布尔string buffer对不对?你看这不都是我们常见的一些东西吗?所以类图啊,可以把我们类的信息展现出来,类的关系展现出来还是非常不错的,当你开发程序会有很多的类,他们类都什么关系啊,用图形的方式展现一下啊,所以这边就有了啊,但是呀,咱们看这个其实只是看一下类图就可以了,意义不大,所以把这个关掉,关掉以后呢,再重新打开一下啊,那么你重新打开以后,那么这个时候就不要OK了,点击这个cancel取消掉。
03:20
取消掉以后,在我们左边的这个位置,咱们就可以画图形了,那比方说咱们说了类图,咱就不说了啊,咱们就看上面这个第一个叫用例图,他描述了用户他所参与的功能,他都参与什么功能了,诶比方说我做了一个登录,那么所以在这种情况下,大家看一下这个是什么意思?是不叫用力啊,是不是啊,View不试图嘛,用力图嘛,是吧,在这里面就可以创建用例图了,打开右键new,大家很简单啊,点击右键里面有个什么东西。叫用力图啊,诶好了,写完以后双击,双击之后你会发现在它左边会有一些小图标,其中有个什么东西,就那个小人叫actor啊,他的执行者啊,就是这样,所以我们说了,你不能说啊,不好看,不好看没关系,他是标准啊,所以把这个小人拖过来,拖过来以后,诶就是这样的是吧,然后在上面写上一个小人干嘛的,起到什么样的作用,比方说他就是个系统管理员啊。
04:23
啊,他就是个系统管理员,好了,那你系统管理员在整个系统当中都做什么样的功能了呢?我就告诉你,你首先做了一个什么系统参数的维护功能,来维护系统参数,所以这个时候我们这边要有个叫U。表示的是用力,所谓的用力就是功能啊,所以把这个打开写上啊,咱们叫什么呢?既然它是个功能,那么功能大家都知道是动词在前,名词在后,所以我们写上要维护。系统参数,诶就是这样,或者你说老师我的系统管理员他也能做登录啊好,我再来一个,我写上叫登录系统。
05:02
啊,我们写的叫登录系统,所以说你这么写完了以后,把箭头给它画上,大家看啊,我这有个箭头把它连接在一块儿,你连完了以后,就表述的是我们系统管理员,他能做这样的两个功能,当然还有很多嘛,咱就不画了啊,意思意思就可以了,他能做这样的一些事情啊,所以这个呢,就描述了这样的一个概念,你知道图形怎么画就可以了啊。然后呢,接下来我们再看看什么呢?我们除了那个用例图类图以外,还有一个最关键的就是它叫序列图,那比方说老师呀,你不说了吗?我们系统管理员能做登录系统的这个功能,可是这个功能怎么做的?对不对,它怎么实现的,怎么处理的,流程是什么样子,我不知道啊,没关系,把图形画出来,我就画一个叫序列图,也叫流程图啊,那好我怎么画呀,首先我就告诉你,诶,老师,我在登录系统当中都有哪些对象参与进去了。
06:02
有哪些对象你们学的时候,你们做登录吧。你们当时都有哪些对象?所以大家看啊,来,我们在这里点一下,点击new,我创建个什么东西呢?叫class,叫类图,刚才画的用例图,先画个类图,这个类图当中,首先我认为登录当中它应该有个控制器吧,有这么个对象吧,所以我在这里呢,大家看有个什么东西来。什么东西啊,Class,所以我就写上,咱们叫做什么呢?叫做登录啊,算了,直接写吧,咱们叫login,咱们叫controller什么意思啊,啊同学们。我这么写什么意思啊,是不是就登录的控制器啊,哎,我们说了,在整个的程序当中,流程当中应该有个控制器来接收我们数据呀,你接收完数据以后做一些操作对不对?诶就是这样,那好了,那么光有控制器不行啊,因为你还要跟数据库打交道,来做我们的查询嘛,登录不就是查询嘛,那么你要做查询的话,数据我们的controller做不到,我们该怎么办?
07:01
是不是应该有一个道在里面呢?对不对,那个道叫DA,叫date,叫数据访问对象,但是其实我们用的不是对象,我们用的是接口,对吗?是不是接口面向接口编程扩展性会更强一些,所以大家看我们这里有个什么东西?叫interface,所以我们这放到这儿来啊,大家看这就是小圆圈儿,小圆圈就是接口的意思啊,那我双击一下,我就写上叫log in,我们叫做do,诶好了,你这么写以后这个就有了,那么有个controller,它是和这个道直接关联的吗?是不是不是吧,那么中间缺了个什么,缺了个服务层对吧?叫所以这个你们应该也学过,也是面向接口编程,应该也有接口,对吗?所以我们这里再加个interface来写上,我们叫做log in service。啊,诶好了,但是你光有接口不行,你们学过接口是无法做业务操作的,他只是一种规范,我们应该有实现类对吧?应该有实现类,所以我的log in service应该加一个类啊,我加一个类这边我应该怎么写呢?来我双击一下,我写上叫log in service I,我实现那个service啊就行了,那么你实现这个service的话,我把你和接口的关系就给它关联上就可以了啊,这样的话,我们的这个接口和时间类之间就有关系了啊,就是这样的。
08:30
那同样道理,老师的那个道也是接口,它没有实现类吗?还有没有,有在哪呢。你们应该学过,你们学买时候应该学过,它确实有时现类,但这个实现类是不是代理,代理类啊,代理类啊,所以我们这就不用写了嘛,代理类在内存中创建的类,我们不用管它,所以我们在当前的这个业务当中登录,我们只需要这么几个对象就OK了,好,那么你要有这几个对象有了,可是你的流程是什么样子的,我接下来就要把流程给大家画一画了,所以在这个位置我点击右键,我们new再创建一个这个东西,大家看什么意思?
09:12
Sequence是不是序列的意思呀,它就称之为叫序列图,所以我们这里不叫序列图吗?就这个意思,所以把这个创建出来,我创建出来以后,咱们一块儿来看看打开,打开以后我现在就要把对象给它增加出来,因为在整个的登录当中,它会有一些对象参与进来了,所以干嘛呢,我先把那个小人给他拖过来。表述的是系统管理员做这个登录功能,可是他是怎么做的呢?我们要把这个login controller拿过来,拿过来以后,诶放到这里,然后呢,我再把那个service的接口给它拖过来,诶给它拖过来啊。好了,然后呢,我再把那个logging door给它拖过来啊,数据库我们就不画了啊,这里不考虑了,所以把那个controller service和那个道我们给它放好了,放好了以后,那我们现在来想想吧,我们这个登录的业务流程是怎么做的?
10:14
想一想同学们,那比方说我的系统管理员,他怎么就把数据提交给我们的控制器去了,怎么做的?是不是在我的网页当中要输入我们的表单元素,点击按钮来提交数据,所以我们这个箭头大家看叫做什么东西啊。叫object message,叫对象的消息,我要把消息发给你啊,所以箭头就从管理员的这个位置就发过来了,干嘛呀,我要点击按钮来登录系统,我的目的在这儿呢,所以我们写上叫点击按钮,然后登录系统。好了,那现在你的请求发过来了,被我的controller,我的控制器拿到了,那我的控制器该怎么办呢?
11:02
他该怎么办了,同学们,他该怎么办了,他是不是首先应该把你提交过来的数据给我拿到啊,所以他要在自己的逻辑当中来处理一些事情,所以这里用这个东西。叫message to self,自己给自己发消息要干嘛呀?做我的数据操作了,因为我要把你传过的东西我要拿到,所以在这里我就写上,写什么呢?我们叫获取请求中的数据。你的请求都传什么数据过来了?同学们传什么过来了,是不传我们的那个登录账号和那个密码了,所以我们就写上我们叫做登录账号。啊,登录账号,还有我们的登录密码,诶就是这样的,所以这样的话我就知道了,哦,原来我们在我们诶登录的时候要把两个参数要传到后台,那好了,你传到后台以后,然后要干什么。
12:00
是不是要根据两个参数查数据库了,但是你查数据库的话,我们CTRL是没有这个功能的。对不对,所以我们之前我问同学们说了,为什么你们学的框架叫SM呀,为什么第一个s spring VC啊,为什么。因为它是从我们数据流转的过程来说这个事儿的,当数据流转过来的话,是不是首先被spring VC当中的类获取到了,是不是这样的,所以在这个时候第一个框架就是spring VC。但是我说了,你拿到数据以后,你得跟数据库打交道啊,但是你的controller做不到怎么办?是不是要把这个请求委托service来做呀,对不对,所以说你的箭头就会指向这个service,所以我写上干嘛呀,我们要查询用户信息。你查询用户信息的时候,传两个叫账号和我们的密码啊和密码就行了。诶,所以这样的话呢,我们就知道了,把我这个地方我告你,我的目的是为了把用户给我查出来啊,就是这么一个目的,好,那你把这个目的拿过来,可是是哪来的。
13:10
是哪来的?Controller是spring VC当中的,那么呢?是不是spring当中配好的,你在上面是不是加了个圈,写了个对不对,他会被我们的spring框架扫描,扫描以后由于自动装配的方式,它会把service怎么了,自动装配到controller当中,对吗?所以这个时候用到了哪个框架spring。啊,所以这个自动装配就是我们所谓的IOC当中的嘛,那么所以它就跟我们的spring VC关联在一块儿了,所以这边就拿到了我们的对象,调用了我们的方法,那么你查询用户信息,但是你们要知道service是用来做服务的吧,他做他跟数据库交互吗?它也不交互,所以他应该委托谁啊,委托这个道吧,诶这个道叫做数据访问接口,叫数据访问对象,所以呢,我们委托他来跟数据库打交道,咱们也叫查询用户信息。
14:11
好,这边呢,也叫账号,这个叫密码,所以写完之后,那好了,你把这个消息你传给道了,那道该怎么办了。那道是不是就应该跟数据库交互了,诶,所以它应该跟数据库交互,我们这里画对象就不画数据库了,所以我们这里直接写上叫查询数据就完事了,你的目的就是为了跟数据库交互来查询数据啊,那好了,那你数据查询肯定有结果呀,那所以说我要把你的结果往回返呢。我把你结果往回返,那我往回返的时候,这个时候啊,我该怎么做呢?大家看我不用,我不用那个之前的箭头了,之前我用的是这个箭头,现在我用这个箭头什么意思。叫,因为我把消息传给你了,你得把消息返回回来呀,所以这个箭头往回返。
15:02
往回返的话,那么大家想一下,我返回什么呢?我这个道。我返回什么呢?我是返回说,诶。有没有呢,就比方说是true还是false呢,还是返回什么now,什么东西返回什么。发什么?你要记住DAO什么意思。Bao什么意思?叫叫数据访问对象吧,我只要访问数据就完事了吧,我需要做业务操作吗?不需要吧,所以说我只做什么,我只做查询什么业务,我不考虑,我不用加业务,一点业务都不用加,所以在这种情况下,我就直接什么呢,返回查询结果。你结果到底是什么,我不知道你是那还是个U的还是个还是个还是个一还是个零,我不知道有什么我就给你什么就完事了,你要什给你什么啊,到底是什么我不知道,诶好了,那么可是结果你不知道不行啊,因为你登录如果有问题的话是要失败的,所以说呢,我们要对我们的查询结果做判断,对吗?
16:09
那这个判断在哪做。是不是在做呀。为什么?为什么这个判断需要在上去做,为什么?因为我们判断这个结果是有还是没有,是成立还是还是什么呢?不成立的话,是不是有套业务逻辑在里面,而这个逻辑恰恰是service应该完成的吧,什么意思啊?是不是逻辑服务啊,逻辑处理嘛,所以我们的login service他应该来做判断,那他应该做判断就是这样啊,那么control干嘛用。CR干嘛用啊,数据的流转你从哪来的,你到哪去,跟controller有关系吧,对不对?所以说你们之前学的时候,是不是跳转页面是在controller里面做呀,到哪里去啊,到这个页面,到那个页面,那跟我有关系,但你怎么做的逻辑跟我没关系,你怎么跟数据,跟数据库交互,跟我也没关系,所以我根本就不需要考虑,所以我的逻辑我应该在service这边来判断,你到底查询是有还是没有,应该什么判断一下,但是我们不会这么做。
17:16
我们说了应该放在service当中来做逻辑判断,但是我们不能这么做,那这又是为什么呢?为什么我们应该在这里面做,但我们又不能这么做,这是为什么呢?因为你们之前学过那个spring当中的声明是事物。你们当时是不是学过那个生命的事物啊?您把那个事物声明在什么位置了?也就是在什么时候来使用事物。啊,同学们还有印象吗?在什么时候来使用事物啊?有没有印象?你们是不是写了一个表达式呀,切入点表达式。行不行?写没写,写了吧,怎么写的,还记得吗?
18:02
是不是写了一大堆,然后写了个什么,然后点星。然后里面扣点点啊。是这么写的吗?什么意思啊,这个这个这么题啊。这什么意思?是不是你要把那个事物增加在所有的service当中的方法里面?那是不是意味着里面的方法都会有事物对不对?是不是啊,没错吧,是在我们里面的方法里面都加事物,但是你们知道事物是什么意思吗?是干嘛用的?那同学们,事物是干什么用的?事物是不是你在跟,就跟其实事物啊,就跟什么很像呢,就跟你们说你们学那个山上很像。当我们打开浏览器访问一个网站,是不是就有个session呢?这个session表示的是你和服务器之间的通信状态,所以说你们不关闭浏览器,这个session就一直在存在,那么存在的过程当中,你可以做很多的操作。同样道理,事物也是一样的,当你跟数据库打交道,也就会有一个通信状态,这个通信状态我们称之为叫事物啊,就是这样。
19:09
所以啊,如果这个事物它要不关闭的情况下,说明什么,你是不是在跟我们数据库一直在交互呢,对不对,一直在交互呢?所以这样的话就会有问题,当你的事物开启时间越长。你数据库的对象的连接,对象的占用时间越长,就会导致什么问题?你占用了数据库的那个连接对应的大量时间,会导致问题啊。是不是这个数据库别人就用不了了,对不对,那这样的话会降低数据库的效率,所以说我们是不允许占用事物什么大量的时间的,所以大家看在这个时候开启,在这儿关闭,这不就行了,但如果你中间要是加逻辑操作的会怎么办?你在中间加逻辑操作会怎么办?会导致那个时间变长对吗?那么别人就半天就取不到数据库连接就会有问题了啊,所以这样的话是不合适的,所以我们现在啊service当中已经不做业务逻辑操作了,他做什么操作,数据逻辑操作。
20:11
所谓的数据逻辑就叫事物。啊,所以service当中现在只做数据逻辑,先增加再修改,再删除,诶,这叫数据逻辑啊,不叫业务逻辑了,所以在这种情况下,那么业务逻辑该干嘛了。是不是应该返回到controller当中来做了,所以啊,我们的逻辑应该回来,回到这个位置啊,大家看回来,我们写上叫返回,咱们叫做返回啊来。返回查询结果啊,就是这样好了,那你把这个查询结果你返回的话,那我的controller就该做这个逻辑了,因为你的逻辑不能放在service里面来做了,我要放在CTRL这里面来做,我要放在CTRL这里面来做的话,那他做什么呀?那么你当初就两种情况吗?要么什么有,要么没有嘛,所以我就可以根据情况来做判断了,来。
21:07
返回返回什么呢?如果啊,如果我们用户查询啊,我们用户这么办,用户存在,那如果用户存在怎么办。想想怎么办,是不是该跳转到下个页面了,主页面嘛,对不对,所以我们写它叫跳转到我们的主页面就完事,诶好了。那可是问题就来了,那如果你要是没存在呢,你查不到呢。你查不到怎么办?你查不到我们就写上当用户啊,当我们的用户他不存在没存在吗?当不存在啊来写上不存在时怎么办?你是不是应该回到那个登录页面,把错误信息给我提示出来,所以呢,应该干嘛呢,咱们叫跳转回啊,跳转回登录页面啊,登录页面并。
22:00
提示错误信息。啊,你告诉我,我出错了,为什么出错了,你得告诉我,否则我哪知道是因为什么原因导致错误的呢?密码写错了,还是说什么用户名写错了,还是服务器有问题,还是数据库中断了,我不知道你要告诉我啊,所以说它分两种不同的情况。好了,大家可以看到,我现在画的这个图就叫业务流程图,也称之为叫序列图。那如果你能把这个图形你要画出来的话,问问同学们,你们代码会不会写?能不能写,我相信多多少少应该能会写点吧,那比方说这一步。啊,是不是就提交表单,哎呀,怎么提交表单呢?怎么提交,那你们要学问这块的话,应该知道我获取那个表单对象,然后点submit就可以了吧,对不对,或者我的按钮上面有个叫type,等于是不是就可以了,对不对,没错吧,问题就来了,哎,老师那选择器咋写。怎么写这块的那个表单或表单对象你不说了吗?们ID选择器,类选择器和那个元素选择器叫标签选择器,把选择器写好就完事了,对不对?哎,1.3me就可以了,但是表单当中应该准备一个。
23:11
账号和密码,那要准备一下是吧,诶就是这样,那好了,你这一步你会写了以后,那么到了数据,从数据的流转过程来讲的话,他走到这个位置了吧。你该怎么做了?第一步,什么?获取请求中的数据,你该怎么取?你马上就应该知道哦,请求如能数据我们学过呀,快点吧,是不是没错吧?哎,这一种方式,这是最基本的方式,但是你们还学过,你们学了框架之后,很多代码就简化了,我们是不是可以在方法当中加参数?可不可以在方法中加参数,你的参数的名称只要跟表单中传位的名称是一样的,就自动封装嘛,对不对?你看这就简单了,那或者老师呀,这个参数太多了,我不想什么呢,诶写好几个,我想用一个实体类是不是也可以也可以,所以只要你知道流程怎么做,其实代码相对来说会好些很多啊,只不过那你说老师我不熟,那就没办法了,是吧,那就回去看一看了啊,那好了,那比方说什么查询查询,这就没什么说的了吧,那重点不就是这个地方吗?你怎么跟数据库交互,怎么写蛇口文对不对,那蛇口文呢,你就得自己下来看怎么写了啊,同样道理,再往回返,往回返,返回到这个的时候,你是不就好判断了。
24:29
判断嘛,If嘛,当你返回的结果是那样的情况下怎么办,你不是那样的情况下怎么办,对不对,诶就是这样,那只不过后续呢,你是跳转到下个页面,还是回到之前的页面把信息展现出来。是不是涉及到跳转的问题,那么你跳转是重定向还是转发,你得考虑吧,第二个你的传数据为什么呢?有错误信息啊,要传过去,怎么传也要考虑吧,那所以这就看你们的代码去如何去写了,所以说只要流程咱们知道,其实这个代码相对来说会好写很多啊,我们说了这个其实还是不错的啊,所以看着画这个图,诶老师画个图看着不难呢,但是恰恰是这种不难的东西,我们在工作当中会经常用上,它是一种思路啊,啊把这个思路捋顺了,代码就能写得出来了啊。
25:17
好了,这个呢,我们就说到这里啊,那么我们现在给同学们点时间把这个软件呢安装一下,可以自己尝试着呢,这是什么呢?诶画画图看看怎么用啊。
我来说两句