00:00
我们继续了好做它的话,首先分画一个简单一个流程图,流程设计清楚了,然后呢,后边代码都比较好写了,下边我准备来创建市场中。这个地方来创建市场活动,创建市场活动,那创建市场活动,那这个地方我双击打开它来画这个流程图,我们说所有的流程都是从客户端发起的,所以我这个地方来一个客户端,第一个环节永远是客户端,客户端怎么发起创建的流程,创建市场活动。那根据咱们的需求,应该说是用户想创建市场活动,首先得来到市场活动主页面。对,这样他才能点创建,才能创建。那来到市场红的主页面咋了?对,他登录成功之后,来到业务的主页面,是不是就可以点这个菜单了,一点这个菜单是不是在工作区中就打开市场活的主页面了,这样,所以说大家看第一个步骤是用户点击市场活度菜单在哪儿,在市场活度主页面点,所以我这个地方就直接画了,这都在浏览器上面进行的。
01:07
首先这个地方来个用户点击点击什么点击市场活动,点击市场活动那个菜单,市场活动菜单,他一点市场龙这个菜单大上这个地方,给他写下这个地方写个注释吧,在哪点呢?在市场在业务的主页面,在业务主页面,主页面他登录成功之后,就来到业务主页面了,他一点那个什么市场活动这个菜单大看发生什么事。他一点住他的发生什么事。页对,是不是在工作区中要跳转到这个什么市场活动主页面啊,而且在工作区中跳转,那要跳转这个主页面,这个页面哪一个页面,当我们刚才已经看了,就这个页面市场活动主页面,沃和奔驰下边市场活动的主页面要跳转到这个页面去,你点那个菜单,那个菜单就超级链接,那说一跳转这个页面,这个页面在web infer下边是不是不能直接跳转啊,不能直接地,那要跳转过去是不是得通过一个ctrler,所以他一点这个插头应该去向一个controller,应该去向一个controller,那去向一个controller,我们得提必须得提供一个controller。
02:23
所以这需求推动多,那这个CTR在,那现在我问你了,是新创建CR,还是在原来品R基础上加方法。对,它返回到这个地方来响应信息,是不是它占一个独立的资源目录,新创建controltrll,所以这个地方我们来新创建一个controlrller,这个地方来新创建controlrl,然后呢,这个controller来做这个来一个叫controller,叫市场活动的controller,对叫activity,然后呢,Controller啊然后呢,大家看这个地方应该他一点那个菜单应该向他发一个请求。发一个请求,那要跳转到主页面去,那就是一个跳转到请求,那大家想一想,这个跳转同步到是E步导同步倒是一不到。
03:11
那一点它,你看响应回来之后,是不是要刷新整个窗口一点它。一点了一点,他干什么事了,是不是工作跳转到这个页面了,在工作区这个窗口当中是不是跳转了,怎么跳转,那这个工作区这个窗口是不是全部都刷新了,它是一个独立的窗口,他一刷新全局刷新,有老师这些没动吗。对,他只我们说了,它是个独立状,只要指定的窗口全局刷老就是全局刷。因为我们没指定这个窗口,他不刷,他不他不刷跟我没关系,所以这个什么全局刷新,全局刷新是不是同步到同步,请教全局刷新同步请求。全局刷新这个是个同步请求,同步同步请求需要提交参数吗?
04:05
没有。对,跳转页面,那需要社交加,你看他干什么事儿,你看肯出了需要他什么需要就传不需要不传他需要吗?你看他干什么事,他干什么事儿。对,就是跳转页面是吧,那你跳转页面是肯定要跳转的,关键是大家这个页面上跳转过来可以跳转,这个页面上有没有数据需要显示的。对,有数据的话,你要跳转过来,你不能只跳转了这些数据,你想什么,给他准备好,跳转过来才能显示,如果你要数据没准备好,跳转过来是不是数据没法显示,没法显示这个页面,即使跳转过来也没用。所以我们来看看这个页面上有没有数据需要准备的。有没有数据,哪一个数据开始,开始日期需要准备吗?不需不需要整备是吧,开始日期是他自己自己出的,哪一个对所有者所有的用户是不是给他准备好查出来啊,这样的话再跳转,你不能说我不查数据就直接跳转过来,这里边有数据吗?对没数据你跳转过来不白跳转吗?没用吗。
05:17
所以大家看我们说应该是这样子的,这个CTRL呢,其实做了两件事,哪两件事一访问它第一件事先把这个要跳转到这个页面上,所需的数据先得查出来,查出来之后呢,然后再跳转,跳转怎么跳转好,跳转然后查出来之后呢,把这个数据传到跳转到这个页面上面去显示出来,这样跳转过来才有意义,大家能理解这个意思吧,对,所以说他做了两件事,第一件事查询要跳转这个页面所需要的所有的动态数据先查出来,查出来之后跳转。跳转过来,跳转什么,跳转过来了,同时把这个数据也传过来了,怎么传,我现在想问你。
06:02
对,这个是个CTRL的,把数据查出来,跳转到页面时,在页面上显示怎么传啊?一个CTRL,这把数据传给一个页面,怎么传过去啊,对,放到作用域里边是吧,传像昨天跟大家说了吗?外部资源之间传递数据是不是通过作用域啊,通过作用域CTRL链把数据查出来,然后呢,放到作用域里边,跳转到页面,然后呢,页面从作文里取出来,这样就可以了,知道吧,所以大家我们说这个CTRL呢,需要做两件事,第一个查询所有的用户,第二个跳转到市场活动主页面,这他做这两件事儿,这两件事儿需要参数吗?不需要,对不需要查询,所有的用户是不是没有查询条件了,对直接查就行了,跳转页面也不需要,所以说他CTR上不需要参数,你就别传了,传也白传,除了影响效率,所以只需要发个同步请求就行了,所以他一点那个菜单向他发一个同步请求,那他接收到请求之后怎么办呢?
07:03
它的三个职责,CTRL层三个职责嘛,第一个通过URL接到请求,有参数,获取参数需要封装,作为封装没有参数,那接收请求通过UR就接收到了。没有参数,不用获取,是不是更不用封装了,所以第一个职责就完了,这样写第一个职责就完了,第二个职责处理业务,对,处理业务就是处理数据,那他要处理什么业务?对,查询所有的用户是不是这样吧,所以下边他就查所有的用户,那这个地方查所有的用户,查所有的用户,他能不能直接去查询,不能那是吧,那那真正处理业务,他是不是得找业务层去查找对调业务层,对调业务调业务层调哪一调service层调谁的service。那你看他查什么表是吧,查什么表,他所有的用户是不是查用户那个表,那他要调谁啊,对用户的service我们说了后台的代码看访问的表,一张表对应一个数据类,对应个map接口,对应一个映射文件,对应一个service,所以在这个service加一个方法。
08:11
让他调过来,这个方法是哪一个方法?当然方法名你随便写了,建名之意,查询所有的用户,那我就可以这么写了,叫query or是吧,User负数是吧,查询所有用它这个方法加一个小括号,查询所有的用户,不需要参数,不用定义情况了,这样的了。那这个service将来要访问数据库,把所有的用户都查了,那他能不能直接访问数据库呢?不能是吧,他得调谁啊?对调map或者调刀网,所以我们调过来个map,在优效的map里边也得加一个转号,这个方法叫查询所有的用户。所以让这个service调过来它就行了,那调来它,它里边也得设计一个方法,叫查询所有的用户,我们这个叫select or,那么user,那么查询所有的用户知道吧,那这个ma就可以通过my body去访问数据库,执行sol语句了,然后呢,这个地方来执行sol语句,执行sol句,然后呢,来查询所有的用户,所有的用户知道吧,所以大家这个思路要跟上啊,要跟上,但你想的应该跟我想的是一样,知吧,课下你自己做的时候,你也应该这么想,但一开始大家可能不习惯,咱没没关系,咱们讲的慢一些,大家习惯这种开发模式之后,后边我们再怀疑,你要接受这种开发的思想,你为因为你以后没有人再带着你做项目了。
09:36
到公司呢,没有谁带着你,谁带着你啊,给你需求之后,你自己做去,到时候我要你的代码就行是吗?啊所以呢,你要会分析,这是我们这个阶段讲的最重要的内容,来也不用着急,咱们不做这么快,你跟上我的思路,好这时候我们知道那查询所有的用户,那就长了这个搜售预大纲,其实现在你设计的时候就能够大概想象一下这个搜索于什么样的搜索域,对select是吧,对是吧,查询所有的字段,然后呢,Form那个用户表是不是这样子,对你到时候你比说现在设计的时代码确实在你脑子边已经出现了,那执行完了之后,把执行的结果往外返,通过虚线反谁调到反馈谁,Service调map,那把执行的结果返回service。
10:19
返回值,返回什么类,什么类型的返回值。这个方法查询所有的用户,对每一个用户是不是可以封装一个用户实体的对象,那多个用户,所有的用户一定是多个,多个用户分成什么,对list放list,然后呢,Service拿到list是不是谁调它,它再继续往回返是吧,CTRL调它,那他拿到U利时候继续往回返,返回给ctrler。那CTRL拿到user user list之后,数据都查出来了,查出来之后他的第二个职责就完成了,把数据都准备好了,下边第三个职责,那要什么?对,要根据查询结果返回详细信息了,那返回详细就是把这个什么所有的用户返回了,那返回了那什么要返回详细信息,那返回详应信息以什么格式往回返啊对,那什么格式往回返,你看前面发请求。
11:15
前面发请求是同步请求,同步请求谁发的,浏览器发的,对浏览器你这个响应信息要给到浏览器,你这些数据要都返回到浏览器。对,那访问的浏览器,浏览器能解析的数据什么样的数据。网页是吧?对,你要把它转成一个阶层字符串给到浏览器,浏览器能解析吗?你要给给浏览器访问一个接线字符串,你费劲生成一个接S字符串,然后呢,给给到浏览器,浏览器能显示接S字符串吗?它对它解析不了,它浏览器解析不了,现在浏览器只能解析网页,所以那你这个地方么,要访问一个网页,访问网页CTRL能不能直接访问网页。不能是吧,他不擅长访问网页,你要访问网页,你得拿到流往外打网页太麻烦了,那要要访问网页怎么办?跳转跳转对跳转到网页,跳转到哪一个网页。
12:11
就是他一点这个什么菜单是不是就跳转到市场活动的主页面,对跳转就行了,把这些信息以网页的形式返回到浏览器,返回到浏览器那这个地方它不能直接返回到网页,它要跳转网页,跳转哪个网页,市场活动的主页面,市场活动的主页面叫indexsp。那要跳转,跳转之前先把这个数据传过去。因为这个页网页上面要显示所有的用户,那先把数据传过去,那先把数据传过去,那怎么传。通过作用预传,那这个地方是什么,把数据什么查出来,数据保存到什么,保存到作用域种,保存哪个作用域中。对,Request request,为啥保存request功呢?
13:02
对一会儿,但它用到用到之后这个响应一回去,这个数据是不是就没用了,没用了及时释放掉,放三月里边虽然也能传过去,但是不能及时释放,所以不用穿,那如果放到配置康带里边,只能在这里边用到,这边用不了了,所以也不合适。所以我们放到筷子,然后放到水筷子之后,然后呢,这个什么就可以跳转过去了,跳转到我们的这个页面里,下边我们的跳转页面,跳转页面,那跳转页面大家这个地方可以想象一下是请求转发,是重进项。对请求转化为啥转转重定向可不可以,不可以,为啥不可以,对他又发一个请求,你在这边放着数据放到request里边,这个地方还能拿到吗?对拿不到了,所以请求转化知道吧,那这个什么引ex.JSP接收到转过来请求之后怎么办呢?对,他要显示它的数据了,显示它的数据,那有些其他的静态数据,它就可以直接显示了,动态数据是不是得从作文里边取出来才能显示啊,就显示,所以说这个地方呢,什么,首先他要什么从作用玉中取出数据,从作用玉中,然后呢,获取数据,获取数据,怎么从作文里面获取数据。
14:20
然接选示免价对在JSP里边从作用里边获取数据,通过ER表达式对吧,获取从作用域里边获取,JSP里边通过通作用域里边获取,那就一二表达式,那如果是个list似的,如果把list边数据所有的数据都取出来,是不是还得遍历啊,便历用什么便利啊,对GSTL便利做功预留的数据是吧。就我们前面给大家让大家看那个什么GSTL便利是吧,这样总之不管是什么,是需不需要便利,数据取出来之后,都要显示到页面上,显示到页面上面,那我们说我们就把这个过程叫做渲染页面,渲染页面知道吧,这样把数据都取出来,都显示到这个页面上面。
15:04
然后这个页面上面数据都有了,都有了之后,它一运行,运出来一个网页,把这个网页返回就行了。返回给前台,那作为响应信息,把网页返回到前台,返回到哪儿,谁发的请求返回到哪,谁发的请求,浏览器发的请求返回给浏览器,把它运行的结果返回浏览器。那返回浏览器,浏览器能解析的数据。只有网页,HTML网页它不是一个字符串,它是一个网页返回到浏览器了,从技术上来讲,这个响应信息是index.jsp,是GSP返回的JSP运行结果就是这个网页返回给浏览器了,那浏览器拿到网页之后怎么办呢?展示对他最擅长的事就是展示,就是显示网页,所以我们知道浏览器拿到之后,浏览器来显示这个网页在哪个窗口当中显示。
16:00
那么他发请求的时候,已经指定了在工作区中这个窗口的,在工作区窗口中来显示,让呢显示这个市场活动的主页面。主页面知道吧,因为这个地方运行出来这个网页就是市场活动主页面知道吧。这样的话,我们这个跳转到主页面,这个流程我们就行了,就设计好了,就这个流程。当用户一点这个菜刀,一点菜刀这个主页面就能打开,打开之后这些什么里边这些动态数据都有了,这样用户就可以了吗?以后继续往下边做了。所以这是我们说的这那这个流程我们暂时先画到这儿,到后边我们还会什么,再设计别的流程,他一点创建按钮就可以了,知道吧,所以的话,那我们这样,由于它这个流程有好几个流程,所以我们设计一个流程,写一个流程实现它,然后呢,最终把所有流程做完就行了,所以我们先做这个流程,写代码,先把这个流程开发好,知道吧,然后呢,知吧,再做一点创加流,再继续往下边做,所以下面我们来做这个流程,知道吗?
17:11
好,这个我们那这个流程设计好,下边编码实验,编码实验嵌入到四层代码客户端,Ctrl service map,谢谢谁啊。对,先写map,在user色map里边加一个方法,这个方法就是对查询所有的用户,这都是设计好了,这写代码就很好写了,你只要设计好了就是几分钟的事知道吧,应该说你要你要写习惯了几分钟的事儿知,所以我们这写这个user map,在这里边加一个方法,来找到我们的user map user map是不是在setting下边。对,Setting下边找一下呢,Setting下边,哎,有一个什么map,叫U侧map,在这里边加一个方法,这个方法都设计好了,范围值Lia Lia里边对user方法名拉o user这样就行了。
18:08
然后呢,这个地方来一个他,然后呢,这个类该引进的类引进来这个地方来这样就行了,这个地方给大家写个注释,这个地方来查询所有的用户啊。方法定义好了,下边来提供一个操数句,在映射文件里提供操数句,哪来提供一个操数句吧,查询的操数句对,再来一个的ID要和方一样,对,把这方名拷尾巴了,然后呢,参数有吗?对,查询所有人没有参数派type可以不写结果,Result map map,因为我们以实体的对象的时候,访问结果,那这个地方来写,写这个浪,这样行了,这样我们就可以了知了,然后在这里边查询所有的用户,那写搜索句行了,那个搜索句查询的搜句拉的,然后呢,从哪个表里边查用户表里边查,查询哪些字段,按理说你得什么,看看前台需要哪些段,前台需要哪些字段,对你看看这个,你看这个下拉列表需要哪些字道,对一个用户的名是吧,接着还有一个哪一个。
19:27
将来用户看到下边就是用户的名字,他要创建的时候,看到就是用户的名字,他一点保存,假如他选了一个是把这个用户的名提交到后台了吗。对,真正提交到后台的是不是把选中这个人的ID提到后台了,对不应该把名字的时候,所以说当我们这个下拉列表是不是得需要俩字段,一个ID,一个客户的名字,这个用户的名字,用户的名字是给用户看嘛,然后那个ID呢,对,在option里边那个Y6属性里边存着,选中谁之后一点提交按钮,真正把那个ID提到会是不是这个意思啊,这都是大家以前学过的啊,别忘了用的时候要会用,知道吗?所以大家这个地方至少得需要两字吧。
20:16
但是别的字段呢,虽然这个地方不需要,万一以后是吧,需要的话可可以复用的话,所以我就索性把所有字段查出来就行了,那所有字段怎么办?对,把他这个搜入一变段拿过来就行了,这样大纲是不是就查询到所有的用户了,就所有的用户都查出来了。这是我们说的,这是啊,有的时候还这样,我说万一那些离职的那些用户呢。离职的用户就别查出来了,就别给他分配了,还得查一个什么外一个查询条件,这个查询那状态处于什么,对启用的才查吗?启用状态,这个状态是哪一个,对lock state是lock state,它等于几啊。
21:00
对,等于一标示启用这些都查出来是吧?啊,别的都不查了,那有老人家过期的呢,你要想过期的是吧,跟当前系统比一比是吧?啊但他这个地方他们咱们买他的项目,他们也没也没这么判断,他就是把所有离职的被禁用的那些过滤掉了,知道就查询所有启用的知1亿的好这个地方我们就给大家查这些就行了,好这样的话,大概所有的用户我就查完了,查完之后呢,这个骚扰句我就写完了。So语行了,Map等于行了了,好吧,Map想法下面写service了,在user service里边加一个方法查询所有的用户,那我这直接直接加过来了,这个地方来加过来一个,然后呢,在这里边加一方码,双码都已经设计好了,对,叫什么来着,放外值list,然后呢,User,然后呢,这个地方来一个query,对,All user知道这是查询所有的用户,知道吗?这是service。然后呢,再看方法定义好了,实现类里边也得加一个方法,那加这个方法的一个out insert implement method这样就行了。
22:09
好,这样的话呢,我们就可以了,可以完了之后呢,Service层方法的实验要调map层,那调map就调过来吧,这个地方调过来调它的哪一个方法,对咱们刚刚写的这个方法,这样的话service层也写完了,看吧,代码写代码是最简单了,知道吧,好,那这个什么三位层想法下面写挺重要吧。在市场活动的controltrl加一个方法一访问,这个方法要跳转到市场活动的主页面,所以我们来写一个市场活动controltrl,那市场活动controltrl属于业务管理的功能,就别写到三的里边了,写到work分下了,它属于ctrler,那这个地方CTRL里边。这个包里边加一个controller,这个controller,对这个类咱们已经设计好了,Activity controller activity就它,然后呢,再看那它这个CTRL类加一个注解,对扫描,那这个地方我们已经扫描过了这个包。
23:08
对,所以直接下面写我们的方法就行了。对,在这里边直接写方法,那写这个方法我们要写一个方法,那这个方法将来一访问它要跳转么?市场活动的主页面,那下边我就写了CTRL热情的方法,Public是public返位值是什么类型的。对猫端view或者是对死string是不是也可以啊,死string那你说人反而死命,将来你要往前台什么传数据咋传,是不是直接放到request子里边就可以了,可以也可以把你放到model里边就行啊,我们这个地方就用spring这样分开传,这样更更这么更方便更灵活,知道吧。好,这时候我们要返回一个字符串,将来跳转页面,然后呢,方法名你随便起了键名之意,它要跳转到市场活动主页面,主页面是index,我这个等西就叫inex了,方法没有知道吗?然后呢,它这个control的方法,将来要处理来自客户端的进。
24:10
那处理哪个请求,给他加一个request埋品,然后通过这个标签给它分配一个URL,那将来我们说一访问这个URL,交给他来处理这个URL,我们说不能随便写,要和他处理自源路径保持一致,他说的自然路径在哪。对work奔驰,所以我们这个地方呢,Work奔驰啊walk奔驰下边的I培下边的资源的名称,资源名称什么对,跟方法名保持一致,打do就行了,他跳转页面不用加水装包嘴。那么这个地方前台没有传参数,这都设计好的,不用获取参数,然后呢,大家看在这个地方直接写我们代码就行了。那贤文代码干什么呢?
25:01
对,咱们设计的这个流程已经写的很明白了,通过URL接收到请求了,下边怎么办呢?对调用service层方法来查询所有的用户,调用service通号码,然后呢,来查询所有的用户,用户那调SERVICE32得调优侧service,对这个地方得注入进来个优侧service。然后注入进来,来个来个user service user service,然后呢,注入进来我们就用auto,对,然后呢,注进下之后直接掉它就行了,这个地方诶。直接调它,然后呢好调哪一个方法,咱们刚刚写的这个方,查询所有的用户,然后呢,得到一个结果是一个什么,对例子,例色里边是优色对象,这个地方来个优色例子啊,然后呢,把这个地方这样该引进的类都引进来了,这样吧,这样的话大看我们就把所有的用户都拿到了,拿到之后怎么办,现在已经来到这儿来了。
26:11
下一步怎么报?把数据保存作用就中,这不是这流程设计都设计,一步一步的设计,很设计好了吗?所以我们这个地方下边把数据保存作用就中,把数据保存到request中拿把数据保存request中得拿到request对象拿request对象反正对加这个参数request,然后呢,直接放这边就行了,当然我们说了,你放到model and view里边也行是吧。我们这样不放到包子这,我们这个什么这样更灵活,更灵活试图直接作为访问值数数据直接放到作用具里边,你要如果包view把数据和视图都混在一起了,所以那不太灵活,而且你得创造一个包view对象,那样不灵活,当然说从语法上来讲当然可以了,知道吧,好,所以下周我就把数据放里边,放出里边给他起个K,对,这个K随便写,对随便写,但建明之意叫啥,我就直接叫它了U色离子,然后呢,后边这个值那是谁啊,对,就是这个变量啊,这样的话,大哥我们已经放完了,放完之后怎么办?对,这个地方写完了,下边是不是第第九步了,对。
27:32
跳转到这个什么,这个跳转到我们的这个市场活动的主页面,那我们刚才给大家说了,给大家分析了这个跳转是不是请求转化,对请求转发到,转发到,然后呢,市场活动的主页面啊主页面。那如何请求转发,对直接转分跳转到请求转到哪,把那个页面资源路径写到这哪一个页面,就这个页面,那谁啊我A这都是水到渠成的,你只要设计好了,你只要分校,我们说代码都是非常简单的,知道吧,让他艾克下边的inex知道吧。
28:19
这些代码你常年的写,以后你常年的写,你想啊,闭着眼都能写出来,知你只要分析出来了,知做项目,做项目不是写代码,这不是写代码,是分析项目,设计项目的,写代码是最简单的事,知吧,你你慢慢你就体会到了,知道吗?这是我们这样,那这样的话,大家我们已经跳转到这的了,跳转这来这个CTRL就写完了,知吧,CTRL写完了,后台代码都写完了。下边写前台了,前台先写这个页面吧,先写这个页面。
我来说两句