00:00
大家好,上节课呢,我们处理了呃,编写了这个商品添加的一个页面,商品添加页面呢,需要提交到这个位置才可以,我们新建一个呃这个的呃,找好位置,产品在边我们。创建新建一个soul,那名称呢,就叫做do pro AED。这个。那提交的时候呢,肯定是用POS提交get就不行了,那我们把这些东西都去掉,然后把这块改成ma AI的密下划线do。现在问题是我们在表单里边。你比如说呃,产品竞价页面,我们把类型变成这个之后,我们这里边儿其实是获取不到参数的,也就是通过。他带哦。他通过获取,比如说pro do产品内容我们是获取不到的,它是空的,因为它没在这里边,需要通过上传对象,因为我们里边是通过把类型上传,呃,过去了,对吧,我们需要通过上传的那个对象里边,我们才能够获取这个参数,这点大家需要注意到,不然的话,你通过这些是获取到的,那么我也想添加上传,我们需要用到一个炸包,我们记得以前啊,下载的时候已经将炸包下载下来了,打开。
01:17
找到我们的下单来。这里边儿啊。这个。过来复制到我们里边的。外下面下面。粘贴,这就是我们上传的包,只要放到这里面来。在我们的这个里边就已经有这个大包了,就可以直接应用了。那我们首先呢,需要在这里边创建这个呃,叫做smart upload这个对象,我们通过这个对象完成上传,完成从里边获取参数,所以呢,首先要创建这个smart smart,呃,Upload。这个。
02:03
好。那创建这个对象过程呢,很简单,直接用就可以了,Smart smart啊lo smart啊lo这个对象,然后。起个名吧吧,写等于。啊,直接创建一个空对象就可以了,然后有错误我们。看一下导入这块,嗯。那第二步呢,创建完这个对象之后呢,我们其实需要初始化一下。说实话当然如果呃,像我经常写,知道这个你要不经常写的话,你找一下这个呃,API看一下里边的一个过程,当然了,这个上传之前呢,相信大家也学过。初始化。那我们直接用这个,呃,对象里边点in ni。啊,Init就是用这个去化啊,我们选择。这个吧,需要传,需要传递请求对象,响应对象和填这个就是呃,上下文的那个,那我们直接从这个。
03:08
这是里边。找到这个。上下文这个,呃,Get server配置的配置文件就要这个啊,我们把它拿过来,然后。请求对象。参数已经成了iqt响应对象。参数也已经存了,这个是我们初始化过来的,然后我们处理上传的过程。上传过程其实很简单,如果表单里边有字段上传,我们直接调用里边的。一般的我们处理上传都先写上传,把这写完直接用这里边的upload,这样的话就可以直接上传了,但是有的错误应该是异常,哎,我们把这个异常加上上传过程,直接使用它上传就可以了。然后上传,如果成功的话,我们上传完之后,我们就可以获取上传这个文件对象,获取上传的文件对象通过哪呢?通过也是通过这个点。
04:06
Get啊,Files它只有这一个方法,那我们是你看有个复数S是获取上传的所有的这个文件对象,那我们需要用文件流file这个去接受,我们叫FS吧。部署去接受。打包。怎么了?呃,还有问题。什么啊?不能够从这里边,咱们是打包打错了。我把这个你今天是不是在IOIO包里啊。我们再重新打一下。Five。啊。Alor。
05:02
应该是应该在这个包里,应该是看是这个这个包少写了一个,少写了1S。也没匹配到什么。把这个去掉。还是没打上包。嗯,导入。There of uplo。诶,想不起来了。然后呢,这是一个负数获取所有文件,那我们需要从这里边获取,因为我们就一个上传文件,所以获取里边第一个,那我通过这个对象里边get,呃,文件获取,这里边的文件获取哪个文件呢?有参数零第一个文件就可以了,然后接收的是一个文件,就不是复数了,File,然后我们声明一个F。等于这个,那这个我们再打包。
06:02
已经。打包了这里。有了,但是还得需要一个。自动的B。导入应该是。这个里边。因为我没有上传对象里边的这个包。这个别打错了,不然他说你。哦。先不管他,我们先往下写。看一下获取到这个呃,文件对象之后,然后呢,我们想获取这里边的文件名保存到数据库里边,因为执行这个过程已经将文件已经上传了,对吧?那我们从这里边获取文件名,然后呢,已经上传了,我们得上传的是临时位置,我们还只需要临时位置保存到我们指定的位置,这样的一个过程,那么我们先把从这里边先获取。一个文件名吧,你不保存的时候已经上传了,已经可以获取到文件名了,那我们通过f.get file内通过这个方法获取到文件名,那文件名了,我们就做一个字符串来接收,F内等于这个,这是获取的。
07:11
呃,过去里面。获取上传的文件名称。当然了,你保存的文件名称和你呃保存名称可以给他改名,不然的话用户呃上传上来之后,比如说是一个点GSP文件,或者是点其他的一些文件,破坏你别人访问,容易破坏你的结构,比如上传一个恶意的一些代码,所以呢,我们这块在上传的时候,可以通过那名称限制上传的类型,限制上传的大小,上来之后图片上传之后进行缩放啊,加水印这些东西都可以处理,对吧,也可以指定呃保存的文件名的一些方式都可以。那么我们就用原名称保存就可以了。然后我们通过。什么呢?把临时文件位置在su.save保存到我们指定的位置,指定位置在哪呢?比如说我们保存到我们的。
08:04
因为上传的图片保存到我们释放一下,释放一下。说一下。那就保存到我们的哦。保存到我们这个。下边吧。这个下面。I。或者是新建一个文件夹都可以啊,但是你这个文件夹必须得是自己新建,那我们就保存到图片里边了。这个文件夹下面。新建一个吧,呃,保存到比如说。我们把它保存到呃,Images下面的图片下边的呃产品下边,那我们就是I'。IMAS保存到图片下边的,呃,Pro dut保存到这个下面就可以了,但这个目录必须存在我们这里不存在,那我们点击这个新建一个目录,叫做imas。
09:01
然后我们再新建一个目录,我们叫做PCT,确保这个呃目录存在,这样的话,我们上传的时候就会上传到这个目录下。嗯,好,没问题了。这样的话,我们一个上传过程就完成了,我们先试一下这个上传过程,可不可以帮我们把这个嗯上传上。这里边儿有一个错误,IO异常。I异常少个包我们删掉,你导入一下I常加瓦点I点。IO ex ex ex CE ex cep。这个包啊,这个就解决了,没有一了,然后这块有问题。
10:04
一下可以了,那我们试一下文件现在能不能上传再继续写。我这保单其他的什么也不提交,我现在刷新一下。哦。一直没发现,是不是我需要?重启一下。登录一下。哦。我给你。我跟你讲。JSP。123。呃,图书管理技能书。没问题啊,然后我们选择一个文件,选择一个图片,选择没有图片,那我们下载一下。
11:02
数随便搜索一下。这个吧,细说PP。图片另存为。我们直接不存到下载页了,呃,存到就存在下载页面,文件名就叫这个我们不变。好下载下来了,然后我们在这里边。再回来。选择。让我们下载页面。这个是我们这里的一个图片。选择这个图片提交。看一下我们主要看哪呢?现在是没有错误,我们主要看一下我们这个目录下边有没有这个文件上没上传成功。呃,你卖这点。好像没有上传,没有上传成功,我们打一下这个。文件名。应该是。应该是可以的,我们把一下。
12:00
systm.out print。出一下这个文件名叫做呃,F。出来这面看一下有没有。或者是如果有问题的话,应该提示。没有问题。再回来。选择文件选择一下吧。要。我们看一下有没有提示诶。这个文件名不是我们想要的。这个是获取到的是。呃文件域的名,我们这块呃获取错了,因为这我们想获取到的不是这个呃表单的名字,我们想获取到的是呃文件的名字。That。提示吧。Five。可以获取路径,什么都可以获取到,好,我们再来。
13:00
这么一。哦,没有这个就历好。我们后退回来再提交。大家打件面这个面和我们下载下来的这个。名还是不样O1开头,七四结尾。开头结尾这样的话已经获取到了啊,这是我这个产品这块还没有没有显示。嗯,没有穿错位置。在后台存的。我写的是相对位置,你下面的。看一下。下边的对下。旅馆了,到时候看取出来的时候有没有啊,嗯,还一个这有缓存,你显示出来,这样的话,我们已经获取文件名了,获取文名咱们前面说了,现在你获取参数什么的是获取不到的,对不对,你现在加入数据库还是不行,我们需要干嘛,我们需要通过这个上传对象里边的。
14:14
Get。通过啊点啊。Get,通过它里边的re请求对象,我们通过这个里边。获取请求对象,然后获取到谁呢?获取到我们新的请求对象,Re q EST里边的,比如说我们叫做REQ1吧。不是这个请求对象,这个请求对象已经获取不到那个参数了,我们需要通过上传这里边获取一个新的请求对象,而在新的请求对象呢,它是在这个包号下面的。我们包是在lo里边的清理对象是这个包一个对象啊。然后我们通过这个请求对象,我们才能获取到每一个参数。比如说我们。呃,介绍一下,比如说产品名等于呃,通过req一点。
15:04
Get参数,它这里边也有,然后获取到什么呢?获取到pro docd name产品名,才能获取到表单里边的产品名,然后同样我们一个一个过去产品名,产品ID啊,产品图片一个一个的。获取呃产品名称,还有类的ID,也比如说呃PA表里面的类ID。产品名称,我们是这个互类ID啊,是这个ID。我们得到的应该是用杠线隔开的两个ID,我们还需要把它怎么着,把它做分割处理?我们再回到我们这这个页面,呃,Parent ID负类的ID,然后我们产品呃,图片P。呃,产品的图片有外产品的,呃,描述DES,还有应该是产品的库存ST这几个。
16:06
其他就不需要了,然后我们把前边的名称一个一个改一下,比如说产品名我们叫P内,呃父类的ID我们叫做就叫做ID吧,先呃简写一下,然后价格我们叫做P获取到,然后描述我们叫做简写一下,然后还有获取叫的是SCK库存。把这些都获取到参数,那获取到这个参数之后,我们说了把它形成产品的这个。绿线也就是加币,也就是我们。嗯,这里边儿的。把它形成这个对象,形成这个对象。才可以对不对,所以我们呃,创建一个这个对象产品加病的对象,我就认定吧。重建一个啊,对一下。啊,然后我们起个名字,比如说叫做呃,P。
17:02
嗯,等于,然后我们直接用就可以了,但是呢,你也可以做一些验证,比如说判断一下图片等不等于空啊,对吧,产品数量等于等空啊,ID等不等空啊,这些都不为空的时候,我们才能不传新对象,你可以这么去处理一下,那我先暂时就不处理,直接验证的东西,我就先这里不写了,你可以自己去写,你可以比如说一个一个验证啊,如果对吧,什么ID不等于空之类的,并且啊,对吧,价钱不等于一个一个圈子,最后直接判断了,我直接。用一个这个,呃,产品的这个对象。然后用产品对象,这里边需要加几个参数,呃,比如说。这里边第一个产品ID,产品ID呢,我们就的是零吧,因为我们传过去往数据库加的时候,我们加就会自动增长了,对吧,零啊还有价钱,但是我们就把它。呃,产品ID,然后产品名。
18:00
呃,产品名,产品名呢,就是我们的。还有。呃,产品名,呃,记住这个顺序,还有产品的描述。产品的描述,产品的描述,呃,直接是上边的ESG就可以获取到这个,呃,产品的描述,然后呃价钱。应该是价钱,价钱呢是做不错的,我们得把它转成整形in。点PRC,然后里边把我们的。啊。价格这个段放来。PRI。那同样还有我们的数量。存储库存量也需要转成整条SK,除了库存量啊,还有。啊,库存量还有什么负ID和IDID和ID,然后图片名这几个字段,那ID。
19:05
看一下我们怎么获取呢?ID是一个杠线分隔的两个,有负IDID,我们把它分割一下,比如说SP分割字符串按什么分割呢?按。我们用下划线横杠分割的还是下划线分割的啊,横线分割的对吧,分割的,那我们在这里边在用横线把它分割开,分割开的话,把一个分成两个,它肯定是数组的,那数组B0的就是我们的什么啊负类的ID对吧?那同样我们粘贴一下。第二个就是什么此类的ID,然后我们的文件名就是f name,图片的文件名存进来。这样的话,我们就创建了一个这个产品对象,需要把它打包,嗯,啊没有错误,创建产品的对象之后,那下一步我们肯定就是什么就是。呃,把它。呃,加入了数据库,加入了数据库那就很简单了,直接我们用这个。
20:04
数量接受一下,直接我们用。呃,产品里边的,但是产品这个类我们还没见呢,你就。Mok加件proo,我们建这个类里边假如有个insert插入方法,我们只要将这个产品P插入就可以了,但是这个方法我们还没见呢,对不对,因为我们现在,呃,有没有呢?那我们先逛一下,先先放在这块,我们把这个页面写完,因为没多少了,对不对?那我们判断一下,如果插入成功会怎么样,添加失败会怎么样,那我们到别的页面找一下。比如说用户的,呃,处理用户。分类。用户,呃,添加页面里面有一个这样的判断。游戏一下,整理一下。同样的,如果大于零,我们就转向,转向哪呢?我们把它转向。
21:03
转向产品的。如果添加成功,我们就直接到。这个里边这个类叫爱的命。哦。就直接到这边这个。这是。哦。产品列表那个类,我看那类名那个注解我忘记了啊,产品select这里面艾产品select里。直接转到这儿,如果用户添加失败,那我们就直接来到。下边。
22:02
呃,下划线,To pro do tab再重新去添加,这块是呃,图书。就是商品。添加失败再转过来就可以了,这就是我们整个添加的一个流程,现在我们需要做的是这还没有对不对,所以我们到呃,Service层这块再新建一个。新建一个类,这个类名呢,咱们就叫做。L。三号线p product pro接这个。创建完,创建完之后,这里边儿我们需要调用这里边的。音色的方法,所以做一个音色的方法,插入数据就行了,当然了,这个和我们比如说加入用户啊,加入分类啊,这都是一个套路,对不对,那我们直接复制一个呃,其他的一个插入数据库的一个呃方法,然后我们改写一下insert。
23:06
少写代码而已。哦。这里。这个带过来。哦。插入数据库,那这里边我们就不是分类了,是产品也是pro Du,然后这块我们呃重新起一个,起一个名吧,比如说我们叫做呃,就是一个P。这个需要。宝宝对吧,才可以。然后做一个插入语句,我们这里边就是insert into,插入到产品表,也就是呃,Pro。P RO Du GT插入到我们产品表,我们看一下表明是不是叫这个。Pro对,插入产品表,然后呢,把所有值都插入进去,这里边一共几个,我们查一下啊。
24:02
嗯。自动增长12345678,只要插入八个,那我们这块还两个问号。现在是两校。三个。现在四个五个六个七个八个。再数一下1234567加公式,八个12345678个好得确保都对应上才可以,然后这里边在这个对象里边,我们就把这个从这个传过来的P里边一个一个过去加入到这里边来就可以了。比如说。哦。P点,呃,Get先是文件名。第一个是从这个产品名称开始,产品名称第一个。啊,逗号,然后get产品的描述。呃,然后是产品的。
25:02
价格。然后。点盖他的价格。价格。这个。然后加逗号,然后Peter get,呃,价格完之后是库存。库存,然后库存完了之后是他的,呃。库存完之后是他的ID。就是。看一下。呃,坏地宅地坏。哦。负i.get它的IDID。啊。在P点。它的子ID我们用。
26:01
Cid加个号,然后文件名P点。文件名咱们也传来了,嗯,Name不是name,是他的那个文件名。好,最后一个不用电脑插入成功,这样的话,我们执行这个如果没问题就可以加入成功。嗯。这里边儿。还有错误。这个包。好,现在没有有错误的地方,我们试一下,看一下我们能不能成功。我们先看一下这个产品属性,你看。呃,说PP作者高落风啊。比较慢啊,网比较慢。呃,加入它的一些属性随便添加吧,呃,价钱100,呃58。嗯,没问题,那么我们在这块体现一下。
27:00
就是我们重新登录一下,因为写完这个我们得重启一下。请教。好,123提交。这两个问题,图书管理新增图书我们选择一个啊,这个细说PP。第四版啊,然后图书属于P2P里边的高级选择文件。这个图片图书价格158块钱,呃,图书描述这是一本好书啊,在其他地方做实验,已经填过这样的记录,它这里边都有库存,比如说三监测啊,点击提交。又回到这个页面了,但是这个页面怎么没便利呢?我们看一下数据库里边有没有这条记录行,要我们从l Mo_pro。好,有了3000字文金没你吧,都添加进来了,证明我们这个添加成功,好,那这节课我们就做到这里,这节课已经时间比较长了,整个的一个上传的一个过程,因为这块是一个呃,做项目的一个细节,特别是新手对这有可能不太理解,所以呢,详细的讲了一下。
我来说两句