00:03
呃,一会儿咱们先写哈,一会儿咱们把这个对,咱们先简单的写一下啊,第一步就是我们说就是我们现在做的事呢,还是收集这个回报的信息。在这里边的我们的第一个操作。就是说接收页面。嗯,他异步上传的一个图片。我们现在呢,这个用用用用GS写的这个写的这个上传哈,GS写的这上传它是一种这个AX的方式去上传的。说实在的哈,这种方式呢,是一种比较简易的啊,就是说这个你如果功能要求复杂一点,这个图片可能大一点,这种方式上传就不合适了啊,它只是一种很简易的方式,只是去在这把它上传上去啊,真正真正要做上传的话,复杂的话,前端呢,这边也,呃,比如说呢,他会去。
01:04
这个有一个什么控件,让你可以去裁切这个图片,就是你上传那个头像的时候,哎,还有的时候检查你这个类型,甚至于说有的时候还断点续传是吧,这个就这个复杂的话就很麻烦了啊。这个这里边儿可以挖掘的这个功能还有很多。这个上传的话呢,我们跟页面上的这个代码哈,我们后端呢,只要对接起来就好了。嗯,先把这个代码先拿过来。嗯。哎,然后。是是在这个类里边哈,做的这个事儿。忘了。
02:13
呃,这是一个操作,嗯,另外一个操作哈,就是说我们接收整个。呃,回报信息的数据。这部分要跟哪对接呢。呃,这个下边哈,在下边这点OK这个按钮。OK,这个按钮哈,这个在页面上来说。我们去对照一下原形哈,现在咱们没有跑起来,没有跑起来咱们就看不了那个。嗯。哎,下一步。啊,就是现在说点这个确定啊,把整个的这个这个表单里边收集到的数据全部都发过来。
03:00
呃,是跟这儿对接,所以说呢,是看点确定的时候,确定的按钮的单击响应函数。哎,就在这儿。哎,他这边是把这个所有的数据呢,表单数据收集到return OB里边。这个return欧街是哪来的呢?是在这儿创建了一个空的对象啊,这个创建了一个空的对象。呃,我们文件上传如果成功的话啊,会把这个图片的路径呢,会会给他存到这个对象里边。这个会存进来,呃,然后呢,这边呢,再把这个表单项啊,里边收集到的数据呢,也都给他存进来,嗯。就是这个前面一个一个的啊充进去的。呃,再然后呢。再然后下边就可以发请求了啊,发一个AJS请求。嗯。好嘞,哎,那么我们现在他要访问的地址是这个。哎,去错开这个斜杠project啊,这是经过租房子用它。
04:05
然后从住过来以后,他自己这儿哈,就是。只是写这个。呃,这也是一个AX的请求。Request magic。Public。啊,这叫做一个save return。说我们这个回报的信息呢,咱们得用一个什么东西去接收对象啊。我们现在这个name呢,不是请求参数的名字哈,相当于是这个哈。相当于是这个为什么相当于它呢哈。就是说如果我们以前的写法,大家你如果理解的话。这个事儿按我们以前的写法呢。
05:02
要是转换成以前的写法是这样的哈。到了点aja。嗯,前面是个L哈。这是什么什么,这就不写了啊,这个type是个post,哎,然后关键是data。以前我们这儿是这么写,比如说这你传一个type。这个type是是这个type啊。这是传一个,你是随便来一个什么数哈,呃,现在我们这个这么写和这这么写它本质上是一样的。因为你这么写呢,也是给这个接算对象的一个属性去赋值,我们这么写也是给这个接对象的这个属性去赋值。表面上格式不一样,本质上是一样的。所以说呢,我们这个启用参数的名字呢,就是它。
06:01
就是这个点的这个属性名就是它啊。这个东西。那么拿这个东西呢,我们需要去接收他一下啊,我们看一下是不是我们这个。Return VO啊是不是跟这个是对应的。他肯定得是对应的是吧,因为这是我提前准备好的是吧。Type type support money。Content content啊,这都是这个都必须得是一样的,哎,所以说这个时候呢,我们可以拿这个视觉类对象来接收这个as请求啊,发送过来的数据。所以这呢,接收数据呢,用我们这个return VO。诶,然后呢,把这个用这个接收到以后呢,我们这个下一步。我想想啊。除了写这个,我们还需要。
07:00
这个对象呢,是需要去存入到我们的。呃,Project view里边的,所以说我们看一下啊,Project view里边呢,有一个list。是return VO的list。哎,所以说呢,我们得呃得从session里边啊,把这个旧的project VO呢取出来啊,把这个新的return VO放进去。Session。所以说呢,在这儿哈。嗯,表单就是请求提交的数据呢,是spring Mac呢,给我们封装到这个里边啊,就是这个这个获取请求参数就不用我们一个一个再去取了,所以在这儿的话呢,我们第一步哈,是从这个。三育中。嗯,去读取一下我们的。读取之前缓存的。VO的这个对象。
08:04
先点get andbu,这个叫做crowd constant点。At t r。一个temple的project。临时的罚站。这是一个project VO的对象。呃,拿到这个对象以后呢,说我们保险起见呢,还是对这个东西去判断一下啊,判断它是否为闹。要为闹的话,咱们后边就我就不跟你玩了啊,这个你就后边就没法玩了,这个就错了啊,你前面就出问题了,所以我们这儿呢,直接给他return一个这东西的field。
09:01
给他个什么消息呢?这个咱们给他叫这么个名字哈。叫做这个临时的project。Miss。就是说呢,临时存储的。嗯。呃,这个project对象丢失。啊,这个。会给他这么一个提示啊,然后呢,如果说是我们这个。如果他不为闹,我们后边操作就放心了啊,我们需要从project VO这个对象中获取。存储回报信息的。
10:00
那个集合。Get一个return with the list。这个list呢,我能不能这个return的list,咱们直接这个ADD往里边放。我要这么放的话,会不会有什么风险。你这东西是从这儿拿出来的?那谁知道这东西是不是一个有效的值呢?啊,这东西我们说呢,大家以后也是这样,我们去多个心眼哈,一个什么东西呢,如果是你自己拗出来的。就这东西我们是这么来的。这是我们自己拗出来的。那就没有任何的担心,这咱就放心大胆的用就完了啊,就放心大胆的用啊,不需要任何的担心。
11:02
但是呢,这东西是你从别地儿获取出来的。哎,就好像说。你是从从超市去买东西吧,货架上拿下来一个东西啊,吃的东西,你得看看它过期了没有。这个你看这个超市卖这个,比如说卖牛奶哈,你看很明显它真的是把这个呃,快过期的放在上边,你不看的话,随手一拿就拿的是那个进货特特别早的那个,他把新进的货呢,都倒腾到最下边去了。哎,你要送人,你要买个买箱牛奶去送送礼是吧,给人送礼你多费点事,你倒腾倒腾,从下边选那个,呃,这个这个出场日期特别近的,那那个是吧,啊不然的话,你送礼去了,人家看到说好家伙这个来看我,然后给我买一箱牛奶,结果是过再过俩小时过期的是吧,我得看着表看着表喝这箱牛奶是吧。这个就不太好了啊。哎,多个心眼,所以我们这个东西也是你这么样拿到这个东西呢,它不敢保证它是有效的,哎,而且确实是你保存第一条之前。
12:10
保存第一条之前这个集合是啥也没有的啊,我们在这个时候呢,得判断一下啊呃,判断这个集合。是否有效?无效的话,那说明我们需要去初始化一下。如果它等于闹。或者是点S是等于零。嗯。那他这个时候呢,VO的。List等于尿一个二。如果你能想到要做这一步,哎,给你挑大拇哥,哎,你这个。很棒。但是还不够。
13:01
我们在这个if里边呢,还要还要做一件事。你看看你能不能想象的到哈。保证他以后获取到以后呢,就是这边我初始化完了以后,他再获取的话,是拿到的是一个有效的。最起码是一个拗过的。我在这if里边还要干一个什么事?对,我听到了。是不是我们得给它塞回去?哎,你得塞回去,不塞回去这个地方就你这儿拗的话呢,还没用。这个地方呢,大家我们去想象一下啊,这个地方呃。画一个小图图哈。看看这个大家。这个能不能想象的出来哈。我们这一步。如果这一步拿到的这个集合呢,如果它的值是闹的话,这个现在这个情况呢,是这样的。这个内存我们是不是分成占内存和。
14:01
占内存和啥呀,另外那个叫啥呀。堆内存。哎呀,这个。这个宋康康给你们讲的啊,还给人家了。你欺负人家在北京,不能过来找你们算账哈。这个这是个变量。变量是不是我们说是在占内存里边存储的。现在最开始的时候,如果它是nu的话啊,占内存这是变量的名字,然后它的值呢,现在是闹。他的职现在是闹。然后呢,我们再往下执行呢,我们这判断了哈,就进来这里边我拗了一个a list new了一个A。就在堆内存里边,就会去创建这样一个,哎,就会真正的去创建这么个对象。嗯,就说就是好比说就是我们用的那个。
15:05
这是我们尿出来的。呃,尿出来以后呢,它自己会有一个地址。假设呢叫0X2。Ae。3C。它有这么个地址。然后呢,我要是副职的话。执行这个这个赋值的这个语句,这个操作,就把这个地址呢,赋值给这,他就他就这个时候它的值就不是闹了,而是这个地址了。也就是说呢,我们这个变量。他现在指向了我们这个对象,哎。因为他们这存储了他的地址吗。嗯,但是呢,你现在你现在的这个对象哈,这个project VO呢。它里边哈,这个对象啊。它里边的。这个属性。这其实是另外,这是另外的一个变量。
16:03
这是另外的一个变量,这个变量指向的还是脑。这个呢,我们这么说吧,这个。VO。啊,这个对象里边的这个。也叫return。就是这么个意思啊,就它的值现在还是脑。它的值还是no。哎,所以说你给这个赋值的话,跟他没有关系。你下次再调这个对应的钙的方法,你拿到的还是闹你拿不到,拿不到这个东西,因为你这个时候你没有指向它。这就所以说呢,我们这儿回来一定要记得给他再塞一下。啊,一定要在这,要给他再塞一下这个set一下呢,就能让我们这个地方。哎,它的值就是用设置成这样一个值,它也指向这个对象。哎,它也指向这个对象。
17:02
然后这样的话以后才就放心了。啊,这个这个时候,因为因为你这个这个变量呢,是我们在这个方法体里边,在这个方法体的作用域里边声明的一个局部变量。啊,他和你这个对象里边的这个。属性呢,这个成员变量呢,还不一样,他们不是同一个变量。哎,我们得让他呢去指向啊,Set一下就让它指向的是我们创建出来的那个,哎。你在外边添加呀,添加是在外边做的。你等一会儿啊,你看我写完你就知道了。哎,就是这个时候呢,先是去。呃,创建。集合。对象啊,对。对他啊。
18:00
进行这个初始化。哎,然后呢,为了。让以后能够。正常使用这个集合啊,设置到我们。VO的这个对象中。然后呢,第七步的话,再往后啊,是我们是将。将我们的。呃,Return VO的这个对象啊,将收集了表单数据的return VO的对象去存入我们这个集合。Return VO。The list加盖的。现在呢,他经过这个以后啊,经过这个以后,就是说他有可能呢走这个判断,有可能不走这个判断啊,但是不管他走不走,就这个东西到现在为止,到这个地方要执行的时候,它一定是指向这个集合的。
19:02
哎,那这个时候呢,你再去调这个爱的这个方法,就一定是把这个对象去给它加到这个集合的里边。哎,那么也就是说呢,就是这一部分呢,是为了去。呃。呃,预先判断一下,进行一下这个初始化啊,但初始化好了以后,以后再去做这个操作,它就不会再重新去走这个初始化了。这个你不能放里边啊,你这个你放里边的话,那你将来这个条件要是不满足呢。啊,那你这只能是初始化的时候往里边放一下。这个这个肯定是要放外边的哈。呃,这回放到这个里边。呃,然后呢,这个第八个。哎,我们return VO放到这个list里边了,这个list呢,是project里边的。对,然后这个project VIVO吧,其实我们应该再重新往三神域里边放一下。
20:04
这里边儿这个这个这就是和我们以前会有一些不一样的地方啊,我们用了spring session呢,我们说它非侵入的非常好。哎,他这个,嗯,不需要我们再去做什么其他的操作哈,但是呢,就是和以前。基本上是一样的,但是就有一个地方。我们以前呢。我们以前哈,从session域里边取出来的这个什么什么对象。就比如说比如说这project。啊,VO这个对象。就是说就还是原本的那个对象。就是说你你放的时候是这个对象,你取出来的时候呢,还是同一个对象。哎,就是说这个它都在他们看运行的时候,这个内存里面。但我们现在呢,你从这里边儿取出来的这个呀,其实其实是从这个red里边取出来的。它其实是从red里边取出来的,从red里边把这个东西取出来呢。
21:01
呃。然后呢,你在这里边对它进行操作。那么这个red吧。没有跟着同步这个数据。就是你把数据放到这个里边呢,其实还不够,我们的最终目的呢,是借助springs把这些数据得存到red里边。啊,所以说呢,我们把数据设置到这个里边,再往三域呢,再重新设置回去,让它呢,再存到我们的这个red里边。啊,再重新设置一下啊。是把这个。数据。变化的。Project VO这个对象去存入一下。我们的,呃,这个叫重新哈。存入这个三身欲。啊,一确保这个新的数据。能够去存入到red。最终啊,这是最终。
22:01
所以说呢,Session在点,我们去set attribute。Constant点儿。HTR。Temper project project view。取出来再给它放回去啊。然后呢,整个的这个过程的里边。呃,看一下啊,这个给它们去拆开试一下。哎,如果说能够到这儿的话,嗯,这个。哎,所有操作成功完成。呃,就返回这个成功。Entity。Their success。这个保存操作它没有什么数据啊,告诉他成功还是失败就行了。
23:02
Entity这个field。哎,这边一点盖点慢啊,看看出什么问题。下边这个就没有了。哎,好嘞啊,这是这个我们写是这么写了啊,所以下一步下边要考虑的事,咱们就得跑一下了。这一串哈,都得给它启动一下。哎,他用的类是和这个是同一个。
我来说两句