00:00
嗯,好了,那咱们就继续往下看啊,这个36呢,咱们就说到这儿了,行了,我把这个复制一下,嗯,下午呢,文件完成一个文件上传就算完事啊。那。咱们看一下。37啊,OK。哟,这么慢呢。来咱们这个路径拿一下。有这边呢,要想做文件上传是不是还差一步啊?是吧?还差一步哈。来OK啊OK,咱们得先把这步做了之后才能下边才能做啊呃,这边呢,咱们给它关了吧。关了啊,37呢,咱们再看一下,嗯,这个重新部署,OK,把服务器起一下啊。
01:15
好了,这边呢,咱们把它打开,打开之后呢,一起看一下这个。来我们登录了啊。然后这边呢,我们。在这儿呢吧。这个啊。好,这边呢,组织机构代码来查询吧,嗯,查询。点查询啊,比如说这个吧,你点它把它设置到这个位置上对不对,所以咱们把这步实现。点这个啊,吃到这。所以这个界面叫org code select啊,打开哪个呀,这个啊,来哪个行这个吧,啊这个啊,这是子窗口的,哪个是父窗口。
02:02
这个是副窗口吧,你要知道啊,这个GP和这个JP这个是副窗口。这个副窗口放到左边吧,这是子窗口,现在你在子窗口点这个东西一点,点完之后你就得给它放到。这个页面上。并且得放到这个页面的这个框上面是吧,所以这边怎么怎么怎么实现呀,简单吧,来找到for循环。呃,循环在这儿呢,我们点的是谁啊,点的是。序号后边的啊,所以这是序号,这是这个吧,嗯,它在后边有个window.close什么意思啊。关闭窗口了,就是点完之后关闭吧,这边就删掉就行了啊来。怎么写?把它放到副窗口上。哎,点open。
03:03
代表什么呀?副窗口呗,副窗口呢,你再看一看这边是不是有一个组织机构代码啊,组织机构代码吧,然后往后看这边改一改叫什么组织机构代码org扣的吧,ID能不能给一个你叫org扣的行吗?嗯。就这样,那接下来这边怎么写啊,简单嘛,点什么document对不对,点什么二点什么你看这就模仿呗,Or吧是这代表谁呀。是代表副窗口,是代表副窗口中的文本在那整整整个整个那个杠吧,然后所有元素吧,其中有个元素叫什么O扣的吧,现在就相当于拿到这个文本框吧,拿到文本框之后点什么。Y6等于某个值啊。等于哪个值啊,这个值。是不是传进去就行了,你只要把它传到这就可以了。
04:00
这样它就有值了,来就这么简单啊,行了,咱们这边呢,给它关一下。关了之后呢,这边咱们点查询点查询,然后点它。window.open.document.or.org code。嗯。没空,我对象。这是服装口吧?这边有有有O扣的吗。应该是能用的啊,带走带走。没了吗?这个内容删了一下吗?是那个音框吗。T I do code吧。
05:01
这没错吧?On click,然后window.open点。Document点二点or code.value。是这个值。再试一下啊。这边呢,我刷一下,刷完之后点查询点查询点这个,嗯。跟那个name有关系吗?他可能拿这个。试试啊,刷一下啊,查询查询点。嗯。怎么个情况?再刷一下,刚才没没部署完吗。
06:03
嗯。没事吧?行就这么着吧,啊,这样的话,咱们这个就给他拿过来了,放到这这个就没有用了吧,关了就行了啊,所以呢,咱们这边啊写上啊第一个。这是第37个版本,首先呢,搞定第一个问题啊,将子窗口中的组织机构代码设置到副窗口上啊,怎么写的,这个叫window.open.document点二点or code是这个吧。点Y6等于一个值吧,什么2222是吧,就行了。好这样啊,后边还有一句话叫window,点什么close设置完关闭就行了,接下来第二个呢,咱们得完成一下什么呀,接下来是不是点确定啊,点完确定这个根据这个编号吧,根据这个编号查什么。
07:16
查这个企业的详细信息吗?这个企业的详细信息啊,好,这边我们要讲的新东西啊。讲一个来看一下,点确定过去,这个下一个页面是什么呢?我们可以先看一看这个界面原型,我们先确定一下再说吧,啊来我们把它打开。这个界面上圆形上显示啊。我们点登录啊,过来之后呢,这边有一个核准点它点它点它这边呢,有一个2222是吧,那点确定就过去了,那这样的话,这边有个信息吧,这个信息是不是来自于那个。
08:00
企业的详细信息啊行,那这边呢,咱们来看一看啊怎么去做。呃,应该是点的,我们这个确定是吧,在这有个这么一个东西,这个东西咱们给个方案表单提交一下,还是说怎么怎么做给他提交过去啊。点确定,给个form啊,确定的话,咱们后边在哪呢。这是弹出子窗口了,再往后再往后是这吗。是这个吧。你看这个页面你就知道了是吧。来这边呢,咱们就是直接啊叫六吧啊6EN来我们把这个复置以,然后接下来呢,咱们在这边呢,写一个啊还是老规矩啊写这个就行了,Alert我们来看一下test,嗯,刷新啊不是这个啊跟那个没有关系了,关系了,关于它之后点右键啊刷新一下来,呃,我们点查询啊点这个点这个点过来之后呢,我就点这个确定。
09:14
是吧,这样的话这边呢是可以执行的,那执行的话,咱们就还是给个那个叫什么form,给个farm得了啊来这边的杠will啊,En啊,这边的method啊,给一个post啊,Name en form把form减了啊,还是提交过去吧,这个整个提交过去,只要其实只要提交那个框就行了啊,这边咱们写上去是吧,最起码呢,你得拿一下这个吧。判断一下它要是等于空的话,咱们不能吧,所以这边写上啊,Document,点什么farms是吧,然后咱们这en farm吧,点submit是吧,判断一下嗯,Or code document.get element by ID啊,那个咱们就不用了啊,直接用这个,这个比较简单点了,O code,因为只有一个吧,判断一下啊if,如果or code.value等于等于这个咱们就直接return吧,然后呢,Alert说什么叫组织机构代码。
10:21
不能没空行选择吧,请选择啊,请点击查询了啊,点点击查询行不行,点击查询。所以这边呢,你看一下啊,这个行不行,来我刷新一下,这边点确定啊,他组织机构代码不能有空,请点击查询啊,我点查询是吧,点完查询之后点啊给它放那。是不是再点确定啊,啊这样。就过去了。啊,过去之后呢,提交谁啊O机扣的吧,那这样的话咱们就提交过去就行了,把它复制一下,呃,接下来呢,咱们应该打开这个配置文件了啊。
11:02
他还是企业是吧。它还是企业相关的啊,它还是跟合成件没有关系啊,所以是查看企业的什么明细吧,行啊就这个这边呢,我把它那个。复制一份啊,还是企业相关的,所以我就不改包了啊,还是这个包,嗯,上午有同学问这个事了啊,这个这个是这不是核准件里边的东西,这还没有到核准件啊,真正核准键还没有,还没开始呢,嗯,我们叫select。En,得了啊。来,我把这个复制一下。然后呢,我们在这个地方吧,还是这个这样这样写就行了啊,嗯,这边的。写一个类叫s select继承HTTP,这还得再用一下MVC这样个模式啊。来,咱们一起看一下。这是一个。呃,查询企业明细来这边呢,咱们就不再画这个UI图了啊。
12:06
点错了啊,South overwe生成一个do get的方法,Do post的方法啊来OK,这边呢,改一改这past,这个改成response,这边呢,咱们再打开谁啊,相关的一些东西啊,那这边先写上吧,这是查看企业什么明细吧,行,这个关了啊,就做两个,一个是父子窗口通信的问题,把它设置过来,这个值放到这个位置上,另外一个问题呢,就是我们查看企业明细的一个。这个过程啊,然后调我们的service就行了啊,Service实现到。嗯,到时间其实我们这个开发的步骤不太对啊,在开发初期应该先将这个接口里面所有的方法都给它画完,跟哪个阶段啊。需求阶段。分析阶段明白吧,就应该把所有的图画好,那天我们只画了一个用例吧,是不是实序图,我们到用的时候我们再画吧,所以这个其实步骤不太对啊,应该把这个全画出来,把接口全定好,方法全出来。
13:10
明白吧,方法都定出来。咱们最后才开发的啊,是这样一个过程,只不过现在的话我就写一个啊画一个吧,啊写一个往接口里面添一个方法,这样可能更简单一些。上来我就抽的太深了,可能就不太不太合适呢,不太好行,咱们还是要定义接口中的方法,这个方法应该是。怎么写,肯定返回一个什么企业对象吧啊。斜对象啊,这个叫find by。带扣子的。行不行,那就find by啊,这里边跟一个什么or扣吧。好了,那这样的话,它有了之后呢,咱们这个可以关掉了,加一个什么。实现吧,加个实现行。
14:01
好了,那这样的话继续。这边完了之后呢,咱们这边呢,是不是也一样啊,嗯,返回什么enterprise叫select back cold吧,词川类型的code啊跟上去,那接下来这边写上注释啊,注释我就不再详细去写了,这个关了吧,虽然这边来个方法吧,嗯,来个方法好一会复制粘贴了啊,不写了,嗯,这个方法好还是service叫service,叫到到访问service service啊还是这样,那这边呢,咱们排一下排一下啊,这边应该需要一个什么enterprise service吧,Service对不对,你有一个什么enterprise service吧,实现啊好,那拿过来之后。你这边service里面有到,咱们是不是早就放进到了,这个不用管了啊,接下来就写就行了,这边怎么写,大概思路很简单吧,就是调用这个request get para这个方法对不对?拿谁啊,就拿那个叫or code吧,拿到啊,拿到这个or code,嗯,行了,Or扣的,拿到之后怎么办呀,接下来你就调就行了,你还管他干嘛呀,你直接调他的贩的就行了是吧,你犯呢,他就有谁了,企业吧,有的企业你就存进去吧,那你其点set对吧,Attribute存一个什么en,再存一个什么en,存进去是吧,存进去。
15:27
存完之后,接下来request get request开吧,点什么forward是不是可以了,你跳的一面是哪个,一面就是杠,Out杠是吧。还记得吧,叫什么什么什么很很长一大串啊,哎,这个是吧是吧,什么open,什么account,什么on,什么detail,放到这就行了。那你的任务就算完成了,获取数据,调service,拿数据,拿到数据存就跳就行了。你的service现在就是个指挥官,你指挥它底层去处理,你呢去调两个东西,一个调model,一个调view,啊就是这样好,那么这个service怎么写啊,能不能从这复制一下呢?
16:09
不写了啊,这那没有意义了,像这个你看事物天天写烦是吧,这边写上什么enterr en那吧,嗯,行了,最后把谁返回D呗,中间调什么。叫倒的方法吧,叫什么select吧,这就行了,返回什么en就行了,这就写完了。你想一想,像这种事物代码是不是每一次写的都一样,全都一样,那这不就找个地方先放起来嘛,是吧,你这每一次写每一次以后,你只要在这在这个方法写一句就行了,写一句话就可以了,这写一句就行了,写一句就行,没必要写这么多事物啊,就动态代里解决这个问题行了,那到怎么办呀,到你这边你得写了是吧,写的话咱们也可以复制啊,上面这个东西是不是可以拿过来。反正也有结果集对吧。
17:01
来,接过来,放到这就行了。无非呢就是看一下啊,有些东西该删的删一删,比如说上面这三行咱们肯定不删是吧,接下来这个我们编译的词后语句可以先写一写啊,这个SQL语句怎么写啊。嗯,Circleql语句需要谁咱们就写谁得了啊,来打开谁啊,O吧打开谁啊,叫open account of detail吧。打开你先看着啊,省得你不知道来他需要组织机构代码,中文名称B。限额是吧,嗯,我们把这呢给他处理一下。好,那这样的话,咱们来看一看啊这边的。叫什么?不需要啊,这有。中文名称say a name是吧?
18:06
还有什么REC1种吧,还有谁啊?限额RA cab啊,From t,什么enterprise where,条件是org code等于括号是吧?编译啊,编译完之后呢,赋值吧,出一个值啊附上,附上去之后呢,就可以查询返回结果集了,返回结果集这变成什么if是吧?这的话是不是?你看封装吧,这个叫什么or几cold吧,这是cn name呗,这个不用,这个不用,这边都不用了,那应该是en掉C,什么RAC是吧,En掉S,什么RAC是吧,CR这一块的话,咱们就直接减了结果级边有没有啊,点get string是这个吧,这边的啊,减了结果集里边get string就行了,嗯,一律的都一样啊,都一样,好,这边全删了就行了。
19:12
最后返回谁啊?En啊,把这个说明到什么呀,外边啊。嗯,最后返回就行了,来这边改一改吧。叫查询企业信息是吧。行,随便写。啊,一切都按照这个这个固定死的这个步骤写就行了,嗯,全都是固定的这边的连接对象不能什么不能关。是吧,异常抛出去是吧。嗯,在这边怎么办?接入一条,虽然这个不需要事物,但是要注意啊,其实select语句你以后就知道select语句它也需要事物的整体控制。
20:02
啊,比如说你可能在后面加一个for update啊,那你可能需要。一些控制啊,所以FLY语其实也需要事物参与啊,还有事物的隔离级别等等,你没有事物的话,你这个FLY语句呢,可能没有事物的不能参加事物的隔离级别啊,可能也会有问题。所以这边呢,咱们就不管它了啊,来返回存进去跳吧,最后你别忘了啊,还有一个视图呢。试图层展示过来之后呢,到这边了,到这边之后呢,你首先第一件事,Request叫get,什么attribute是吧,取什么en吧,它是不是取一个enterprise对象啊,做强转啊,Enterprise啊,拿过来这样就可以了,到这之后你就拿就行了,比如说这边有什么信息啊,组织旧代码怎么写,en.get org code是吧,中文名称,中文名称就是那个en去调get c name这个限额币种怎么写,点get re c是吧,这个叫账户限额,就是直接是get RA cab嘛,嗯,拿过来。
21:14
这样的话,最起码呢,这个就完成了,好我们一起来看一下。来,给他部署一下,然后把福气起一下。看看不行再看啊。来这边呢,我们走,然后这边的这边的嗯。查询呗啊,要是不查询点确定就不行吧,得点查询啊。这个要言说也不能写在这啊,应该给它禁用一下,我就算了啊,你就知道这个事就行了,来点吧,过来啊,然后点确定。
22:01
嗯,到这边是不是有信息了啊,什么组织机构代码,企业中文名称,账户限额3000。这有单位啊,这个也不管了,这个也不管了啊,那线和B种这块呢。这这怎么卖这个币种000是吧,你要转吧,你就转吧,怎么转啊。哎,你看配置文件啊,你好好看一看,有问题了,你的配置文件里边000对的是中国吧,嗯,所以这个时候拿不出来啊。你在这是不是出问题了,String吧,点什么get什么。T8扣吧,这边呢,写了个几啊000吧,你把这个东西减了放到这,你想一想是不是那个000啊啊不是这啊错了。错了,位置错了啊。上面上面上面啊,上面是C吗?一会C一会C搞蒙了啊来这个怎么办?减了吧,叫string YouTube吧,点get什么吧。
23:12
词寸要求啊,点get c。是这吧,写过来,这样写的话,你这肯定就出问题了是吧,你刷新一下你看发现限额币种是中国。这肯定不行嘛,你这应该显示人民币吧。这个问题怎么办呀?你看,所以说大家当时呢,说的是正确的啊,数据库里边不应该存什么000。你想数据库里边你存的这个000,国别存的也是000。你这俩是不是冲了,你这不是给自己找了麻烦了吗?你看你当时在设计这个数据库的时候怎么设计的啊,来,咱们回去这看一看零七啊database被这不打开数据库SQ脚本吗?你好好看一看。
24:05
这个地方有一个什么国别,是叉三积压000,接下来往上走的时候,这个企业里边呢,是个币种积压叉三是吧,所以在这写的是不是也是000啊,所以现在你没办法了啊,现在呢,这个配置文件里面配的这个000,对的是什么?对的是中国,嗯,所以你拿出来东西,它是中国,不是人民币。是吧,怎么做,怎么解决这个问题。再写个配置文件。是吧,再写个配置文件,不就不是那个那个K不是在一个配置文件给你讲一下,我在这我再加啊,我在我再加个000,你不允许啊。加不上吧。所以这个时候的话呢。除了这种方式呢?还有其他方式吗?再写个配置文件。
25:08
我在这再加一个前缀行。可以吗?这边写什么人民币对吧。往下点啊。然后我再加一个C点001叫美元是吧。我再加一个C点002。英镑啊,我再加一个加Y点003。003啊。写上一个日元。行了,我就这么写行吗?我就加了东西了。那这边怎么办呀?
26:07
啊。这样写C点。行吗?也行吧。也行啊,你在这加上去不就行了,反正从数据库里边取出是000嘛,C点零零啊试试啊,所以这边呢,咱们解决一下,嗯,有多种解决方案,刚才有同学说的挺好啊,就是再写一个另外的配置文件,那这样的话,你这个绑定资源是不是还得再绑定一次,所以咱们就不采用那种方式啊,我直接呢就在这加了个前缀,所以我希望大家这种设计思路也应该有啊,如果要是K重复的话,我希望你能够想象到在同样的数据前面加批量的相同的什么。前缀或者是后缀,明白吧,那这样的话,将来呢,在处理的时候呢,批量处理一下就行了啊,没必要非得说再加个配置文件。
27:03
那可能也没什么必要啊,所以这边呢,我就再来试一下来点它。点啊来点好了,这边点就是这个这个啊。点查询点查询点它点确定啊,过来之后呢,有信息,有信息之后呢,这边呢,我们这个。人民币就出来了啊,没有问题了,就是这个啊。行吧,就这样吧。这个功能我就做完了啊。往下啊看一眼。查看企业明细。显示币种的时候啊。最好由于什么呢?由于币种的。
28:01
币种在数据库中存储的和国别什么的相同了吧?啊,国别相同了。属性配置文件啊,中K不能什么重复吧。T,不能重复,这个大家知道啊,我4000不是报错了吗?不是第一种解决方式啊,是什么解决方式。再写一个什么配置文件吧。再写个配置第二个方式啊,就是在。B种啊前统一添加前缀啊,统一添加前缀。这上统一添加前缀或者后缀吧,啊也行,这种方式好了,这样的话,咱们一个父子窗口通信,还有一个查看企业的一个明细啊行就到这儿吧,这个。
29:10
接下来呢,才能轮到我们这个叫什么这个文件上传操作啊。来这边呢,我就给它复制一下,接过来038OK啊。这边呢,关了它,关了它之后呢,咱们这个37的路径再拿一下啊。来点它点它走走。这边的接过来删除OK啊来这边咱们给它关了。这个我得先讲一讲文件上传吧才能做啊。来把服务器起一下。起了之后呢,我们看看没有什么错误的话,我们开始来点它。
30:04
电灯录啊。嗯,这个这个开课论件的好查询查询点它点确定过来之后,这个没有问题,接下来这边呢,把信息呢写上去,然后点确定吗。这个模块的话一共三个功能啊是吧?这个分页查询你是不是做了,嗯,然后点确定这个信息是不是展示出来了啊,接下来点确定嘛,点完确定就把这个叫什么核准件是不就开了啊,核准件开开户文件这边有个浏览嘛,验资文件是吧?找到文件点打开完了之后点确定它就上传过去了吗?是吧,就是这样。三个功能啊,另外呢,在这呢,可能是做了一个这么一个东西啊,就是这这个。好把大家把这个看一下啊。行吧,那咱们就开始做这个文件上传。
31:04
这边的把它选上去点确定,但是这个文件上传我肯定不会在这讲啊。我肯定会在另外一个项目里边讲,单独讲上传,讲完之后呢,再回过头来再做这个功能啊,可能这样会更加清晰一些啊来停掉吧,服务器停了吧啊这个项目咱们暂时先不看了啊,那这样的话咱们就得啊,嗯,给大家再介绍一个这个插件啊,我们再给大家介绍一个插件吧,这个从这拷一下吧,啊然后呢,我们找到071GO,找到我们这个里边有个东西叫upload。啊好,我们这块呢,回退回退啊找到它,然后这边直接贴过来就行了啊。好了,这样的话,咱们这个插件讲一下,嗯,这又是一个,这是阿帕奇的啊,这个会感觉很亲切啊,啊,这个是阿帕奇的啊。
32:06
这个啊。File upload啊。这个里边这套东西呢,嗯,我就直接上例子了啊,你就看例子就行了。这边我看一下啊,这个文件夹里边,这个是我们文件上传所需要的一个JA包啊,这个JA包是需要的,叫commons IO,那我说一下啊,这个面试官呢,可能会问你啊,就是在项目开发过程中,你有有没有做过文件上传这个这个功能,你想一想哪个项目没有文件上传呀,是吧,文件上传的地方不多,但是多多少少是个项目基本上都有文件上传啊,有那么个,有那么个一一个地方,两个地方啊,是文件上传的啊,你说这个图表,今天上午讲那个图表你能常用吗?其实在项目中就一个位置有,或者就两个位置有啊。所以呢,咱们这个东西呢,其实他可能会面试问你这个问题是吧,怎么办呢,大家把这个名字记住啊。
33:04
叫common file upload,谁提供的啊,记住了,叫阿帕奇或者是阿帕奇吧,反正这个发音呢。阿帕奇啊。呃,名字说全了啊,叫commons file upload叫commons fileload啊这个。Upload example啊,这个是个例子,这是个例子。这个是解压缩,就是它,嗯。那这边的话我就再写上了,往上啊资料往上资料来这个咱们给他拖进来啊,省得这边显得很乱啊,来拖过来。啊,这个炸包的话,我我就我就我就直接把放到这得了,算了,别放了。放,放进去。就觉得这个东西。不放到这的话,其实放过来吧啊,刷一下就这俩啊,这俩大包,那这样的话我就把这个炸干什么呀,删了吧,删了它吧,啊这是个例子。
34:10
网上资料啊,这个解压缩之后呢,就是这个了啊,这个是源码啊,你可以看一看人家那个文件上传的源码是怎么写的,到时候啊源码Java org阿坝G是吧?嗯,这不都是吗?咱们用一下这个啊叫Dis。到时再说吧,啊,现在先别看了。行,那咱们就来写个例子来看一看,行了,这边呢,我就专门在这给右键新建个web项目啊。呃,这个web项目咱们就叫做file upload,我只讲上传啊,下载这边不讲啊,只讲上传。文件上传后边你们会有下载啊,下载的话你们可能会用那个。Two里边带的一个东西啊。
35:02
那就写成fire up吧,行吧,别漏了,好点这个啊,Finish啊no啊就行了,好大家看一看这个文件上传,首先呢,咱们是不是得引入两个炸包啊,嗯,来,咱们打开这个,打开咱们的这个啊,复制一下,然后呢,这边呢,咱们就给它放过来就行了,咱们用这个阿帕奇的啊。其实我要是不讲,我觉得大家也能写。为什么呢?因为这个从网上都都有现成的例子啊,你把那个例子拿下来,哎,你看一看就行了,好了,咱们一起来看一下,呃,这个JP打开吧,打开之后就我还是啊从零开始吧,给大家写一下,嗯,这个配置文件打开啊,打开之后呢,这个文件上传呢,咱们就来一起看一下。好。呃。我看文件上传之前,是不是应该再讲讲那个文件上传的原理呢?说一下吧,啊解释一下,比如说吧,我大概画一下啊文件上传,其实这个事儿啊,还是比较好理解的啊。
36:06
来咱们假设啊,假设这个就是那个什么,这个就是那个本地计算机啊,本地计算机。本地计算机的这个里边啊,应该应该应该有这个硬盘吧,啊硬盘啊,我简单画一画,可能这个东西呢,就是画个图比较好理解啊,这是一个硬盘,本地硬盘。然后呢,咱们这个本地硬盘有了啊,然后呢,呃,这边还有一个浏览器吧,我换个颜色吧,啊,这个是浏览器软件啊,浏览器运行所需要的内存。这是浏览器软件啊,运行需要的内存。嗯,浏览器软件它运行需要内存吧,必须的呀,它需要内存,来我画个线吧,啊画个线它就是浏览器运行所需要的内存啊,然后呢,这边我也画个线吧,啊这是本地硬盘吧,嗯,这是本地硬盘啊嗯,是这么一回事就行了,来这边呢,它是叫远程服务器啊,叫远程服务器,远程服务器。
37:21
来这个咱们还是红色吧,啊,这个咱们也改一改,这个还是红色得了,嗯,来这个远程服务器上大家想一想。是不是也有硬盘?有吧,这叫服务器硬盘啊,我写上这叫服务器硬盘。啊,附近啊。来这边我再画个杠啊,画起来来,接下来上面啊,我画一下这个我也画成蓝色得了,好画一下啊,这是什么呢?这是我们他pad服务器运行所需要的内存。TOD服务器运行所需要的gbm内存。
38:05
行吧,大家知道这个计算机它一般都有硬盘和内存吧,啊,一般都有硬盘的内存啊。你看好了啊,这是计算机A,这是计算机B,每个计算机上都有硬盘,都有硬盘,都有内存,都有内存,浏览器运行的内存,他们的服务器运行的内存,现在呢,在这个位置上,大家看清楚了,有一个文件,哎,我换种颜色吧,换成这种颜色吧,啊,有个文件。现在呢,要求啊,把这个文件呀放到哪。放到这个位置上。明白吧,这个过程叫什么叫文件上传。啊,文件上传,你想一想,他不是说把这个东西直接就蹦到这了吧。不是说直接放到这儿的呀。你要想把这个里边的文件放到这个硬盘上,那你得先把这个文件先发什么呀。
39:01
放到这个。内存里边吧,啊,你想一想,这这个过程,这这这属于什么呀,这输入还是输出啊,这是。啊。输出输入啊来,再把这个文件通过网络传输的方式吧,是不是放到这个位置上啊,放到这儿啊,放到这儿来吧,放到这儿行吧,就这么着吧啊。来,放到这儿了。那么现在呢,你要考虑一个问题呢,这属于什么呀?这属于什么流啊。这个不一定啊。这不一定了,这就这什么输出,还输入这个,我一会再解释吧,啊,最后再把再把这个东西是不是放到这啊啊放到这啊,所以这个文件你看就过来了,这就是文件上传啊,你要是把这个文件从这个位置放到你的本地上,这叫什么下载,就是上传和下载,你只要懂其中一个啊,另外一个就简单了啊,我说一下这个流呢,我们叫做输入流,无论是输入流还是输出流,都是相对于什么而言的呀,相对内存的啊,记住了,输入流和输出流啊,都是相对于内存而言的。
40:21
到内存去。是输入啊,从内存出来叫做输出。这个其实我说一下啊,这个流啊就有意思了,它既是输入流又是输出流了,这个流呢,它对于这块内存来说呢,它其实呢,叫做输出流啊。对应的位置不同,它的叫法也不一样啊,我连上去这个可能叫输出啊,相对于这个,但是这个零呢,相对于这个内这块内存来说呢,它可能叫什么呀,输入流啊,输入流它就叫输入流了。
41:04
所以是这样。就跟那什么的似的,你学那个什么,初中就学过那个物理物理物理方面的那些东西了是吧?相对运动嘛,是吧,什么叫相对,你坐在汽车里边是吧?你看到的是什么?是外边的树在动呢,楼在动呢,楼房动起来了是吧?那是相对的啊,相对静止,相对运动。所以咱们那个输入流程是这样。最后呢,这是什么流啊,这是输出输出流,这是输出流吧,输出流。啊,输出又叫写,输入又叫什么读是吧,是这样的。好了,大家先来想一想,这就是文件上传操作,那么请问啊,这个文件上传啊,大家想一想。哪几步需要我们做?首先一这个文件放到浏览器的内存里边,这件事需要我们完成吗?
42:04
把这个文件发送给服务器。需要我们完成吗?嗯,先走到这儿,再走到这儿,再走到这儿就行了,你好好想一想,这个很重要啊,现在在这儿有个什么。啊,有一个表单吧,这有一个什么框框吧,框框后边有个什么,有个按钮吧,这个按钮上写了几个字啊俩字叫什么浏览。是吧?那我问你啊,用户只要点这个浏览,只要点下去。它就会弹出一个Windows窗口对吧,而这个Windows窗口供我们选择文件吧,比如他选的是这个文件,它选的是C盘的杠啊这个hello。
43:02
点加了他选择了这个文件,你想一想,你选上去之后,在这个上面有一个什么东西,同志们。有一个提交。是不是有个提交啊,有提交按钮啊。我问你整个这是个什么。整个这是个放表单吗。这个东西它是个放吧,它是个放吗?放表达。好了,我在这儿呢,给大家解释一下啊,来这边连上去,它是个放,当我选上文件点击提交按钮的时候,会将这个文件发送给服务器,那么请问啊。这个文件读到浏览器内存中,再从浏览器发送给服务器,这两步是不是就省了?我们就不用做了吧。我们简历的提交是干什么的?我们点提交干什么的呀。我们点提交是不是就是把这个文件,哎,这个文件啥时候放到内存里边的呀,你也可以这样理解啊。
44:03
点提交按钮的时候,这步和这步浏览器帮我们都做了。点击提交按钮的时候,这步和这步浏览器都帮助我们做了,听明白了吗?你选文件了吗?选了你点提交,他会把这个文件发过去吗?谁给发的浏览器?明白我的意思吧,所以点击提交按钮之后啊。浏览器帮助我们把这个文件放到内存,再将文件发送给服务器。其实我们Java程序主要关心的是哪步啊?在Java虚拟机中编写Java程序怎么去?人家扔过来我是不是得接?我接到之后,我是不是得把这个东西写到硬盘上。所以说你想我们加瓦层学员干的事是什么事啊?这个不用我们,这个也不用我们,我们做的事情就是扔过来之后,我们干什么,接一下子接到之后我们写到哪啊硬盘上。
45:03
所以总体来说文件上传实际上啊。我们程序员只需要做什么呢?做这个接收数据写,接收数据写,接收数据写,而且大家知道这个文件如果是一个G的文件,那不可能一下就过去了。这可能是几KB几KB几KB往那发送的。是吧,那发送完的话,那就。最后把它文件组装嘛,组成组装成一个原这个组装成和这个文件长得一模一样的一个文件嘛,组装最后组装起来,那不可能一点一点不不可能一下就全发过去,他可能一点一点几KB几KB啊发过去了,在这呢,肯定有个临时文件,临时文件接收接收接收接收到最后呢,把这个东西给它写到把所有的都组装成一个文件。这么一个过程。所以文件上传是这样。这步这步不用了啊,就用这步就行了。这步。因为你点提交这个放进去了,把这个文件发过去了啊,你只需要接收写就行了。
46:05
这大概呢,就是文件上传的一个操作吧,啊,那我说一下这个文件上传呢,我们用什么组件呢?嗯,用阿帕奇提供的commons file upload。这个东西希望大家可以把这个截一下,截个屏啊。行了吧。好了啊,那这样的话,咱们就。来看一看。它应该是在这个位置上来,我在这写上啊,Page heing cody,写上去7D18030,然后再加上去HR,加上去头,然后再加上去title啊,叫file,二叫阿帕奇的,叫commons file upload,接下吧,是他的啊组件body这边呢,我是不是得画个表单呀?
47:16
是吧,这写个什么,咱写上request,点什么get,什么contest past吧,加上这什么告诉他,嗯,叫five up.do吧,行不行,Method啊,咱们先写成get,一会再看,接下来这边呢,叫做文件啊,就是个人简历啊,个人简历,个人简历行吧,上传个人简历嘛,Type对吧,类型先写上text name,这边写上去叫be name value我也可以先不写了,这边加一个什么input type类型什么类型submit提交对吧,Value就写上提交就行了,好,这边我换个行,好一起看一下,这边呢,我把它呢部署到toca服务器,添加走走toca服务器KOK,然后把服务器启动。
48:07
启动之后呢,我们来看看有没有错啊,好了,没有错,没有错,咱们就直接访问吧,打开它,呃,应该是127呗,嗯,127.0.0.1-fell up回车。是吧,你看个人简历是这样,后边它没有那个组件吧,点不了啊,所以这边你得换一换了,听我说啊,这个是非常重要的了,咱点它把它改成S。明白吧,接下来你看这就变样了,就不一样了。嗯,你看点那个浏览它就有了。是吧?你这回一点提交,你是不是就把这个文件发过去了。所以这个很重要啊,这个类型是file类型。好,咱们再加个普通元素啊,在个人简历上面加个普通元素怎么加?
49:03
我们写上input type类型是type name是一个,咱们就写上这个user nameme吧,好了,这边是一个用户什么姓名啊,BR换行,这边的BR换行,最后来个提交,嗯,是这样吧,行了,这边我就刷新一下吧,就是这个样子了啊,姓名写上去,然后点击嗯,这个地方我就加一个吧,我我加一个得了吧,桌面上加一个啊,点右键新建一个这个这个这个这个建个什么呢?Word文件行吗?啊,叫做简历吧,啊,随便写吧,啊这边呢,我就我就我就随便写点东西啊简历啊,个人简历。来,我把这个复制一下啊,咱贴过来吧。来这个我就我就多复制点啊。行了。
50:05
这个文件好像也不小啊。是多大呀?有。还挺大啊。行吧,就这么着吧,啊接下来呢,我就点它对吧,我点桌面我就我就哪呢,这是这个是吧,我只要点提交它是不是就过去了,那么这边呢,大家看一看啊,现在盖的请求好像不太靠谱吧。大家知道盖的请求它只能在哪个位置发送数据,在请求行上发送数据,是不是在这发送了,这是个简历,这是个两兆多的文件,你在这儿发它肯定有长度限制吧,而且在这我说我get的请求只能发送普通读串对吧?他像这种POS的请求才可以是吧?所以咱们先来看看吧,啊到底能不能发送,咱们试一试,所以这段的知识点我总结一下啊知识点一是什么?注意啊,要呃完成文件上传操作啊,必须使用。
51:16
嗯,File组件。是吧,第一使用file组件就是这个啊input type类型是什么fire吧?嗯,看好,二是什么。我先来测测得了。这边呢,我刷新一下啊,刷新刷新刷新完善之后呢,这边咱们不是以前安装过一个工具吗?Watch watch一下行吗?这边我写上啊这个吧,然后呢,简历呢,我就找吧,嗯,找然后打开啊点提交你看。404你不用管哈,404是不是因为这个还没写呢,所以这边你看一看是不是文件上传,用户名能不能发过去,文件名是不是发过去了,也就是说能发过去文件名,文件内容过去了吗?没有,这个文件本身两道多的东西在这是不是根本就没有啊,所以你没有提交啊,所以这个时候你只能第二注意,呃,文件上传啊,只能使用host请求,Get请求,只能提交什么普通字符串。
52:24
而且有什么长度限制了是吧,所以哎,你看有同学老师改成pose呗,改了啊改了就行了是吧。来试试。这边呢,清掉后退来刷新刷新刷新来清空,这边点右键查看原文件,好改成POS。接下来我写上去张三,然后我再点中简历来点中它打开来提交你看。搞了半天,是不是那个文件还没过去,还是只提交了一个什么。
53:02
只提交了一个用户名和文件的名字,文件本身还是没有提交过去吧,行吧,嗯,这边呢,我告诉你怎么做啊,这个你得记住了。这个enc type,我相信你还有印象吗?你。是吧,咱们在阿阿贾克斯里边发送那个POS的请求的时候,有没有设置设置过这个属性啊,是这个吧,好这个值啊,我就先写成这个样子,我试试啊。来我试一下后退刷新之后清空点ABC加上去,来打开点提交,嗯。跟原先一样不一样。是不是还是一样啊,不行啊,所以说这边呢,这种方式是不行的,怎么办啊,看清楚了,需要改一个东西,把这个改一改,改成什么。Mark po。
54:03
啊,这种方式来咱们这边后退一下来刷新刷清空,写上点写上打开走你看。这次文件过去了。这次提交文件了。跟原先还一样吗?不一样。看见了吗?内容类型是什么?Multi part from。这个大家呢,记住就行了啊,这是谁制定的呀。W3C制定的啊,W3C制定的。呃,文件上传只能使用POS应用啊,文件上传的时候form表单的什么。或者放标签吧啊,放标签的enc就是including啊,Including enc PI enc派属性的值啊,只能是。
55:07
就这俩值啊,一个是money part some的这个不用不用不用记啊,告诉你怎么做。啊,这个还这边呢,有个东西叫ec,你只要点出来它就有明白吧,所以这边呢,我写上它啊这个呢,我捡了,捡了之后在这文件上传放标签的enc type属性的值只能是这个。不能采用什么,不能采用这个啊,不能采用它了,缺省值是谁啊,学生值是这个值。啊,所以呢,文件上传还有很多细节在里边啊一。发药组件二。得用POST3。Enc type还得改一改。也就是说你看这是不是非常固定的一个东西啊,非常固定的啊,接下来呢,你才能做这边我删掉就行了啊好了,那咱们一起来做一下文件上传了,嗯,这边的话大家想一想,下一步该写零是不是这个路径。
56:14
是它吧,所以这个时候呢,你把它复制一下,然后打开窗面文件是不是写一写啊写上啊serve light,写上serve light来name加一个什么class,再加一个magic啊,再加一个叫name加一个。是吧,这边叫什么?咱们写个fire up得了,然后把这个复制一下放到这啊,这边写上come,点北京part there。Java web底light,咱们叫file up light行吧,这边呢,这个包没有啊,咱们建议一下。然后呢,我把这个包建一下贴过来,然后把这个类写一写啊,这个类呢,就是完成文件上传操作的,贴过来继成HTTP好了OK了啊,这边呢,咱们点右键吧。
57:08
啊,生成一个do post是吧,OK啊,这个改成request啊,这个还是改成那个response吧,嗯,行,就这样。那主要的就是这段代码怎么写,能完成文件上传,我先说一下啊,同志们大家看好了,我是现在给大家讲课是吧?那讲课的话大家想我的计算机只有一个吧。我只有一台计算机是吧,刚才我画那个图你还记得吗?它是不是有本地计算机和远程服务器啊,那这这这这怎么区分啊,哪个是本地计算机啊,哪个是远程服务器啊。打开我的电脑CDEF只有一个位置上是服务器的位置啊,C盘阿尔法to派的服务器,这个文件夹之内的范围全属于服务器里面的东西,这个文件夹之外的全是本地计算机,明白我说你什么意思吧,就说你现在呢,在C盘下选中它,你给它上传上去,就把这个放到哪了。
58:06
他们盖的服务器里边的某个文件夹里边了,明白说的什么意思吧,这叫文件上传吗?那我给你文件下载啥啥意思啊。就是在这个文件夹里边有一个文件,最终把这个文件夹里面那个文件干什么,放到本地上,就是放到这个文件夹之外的,这就是你下去之后练的话,你怎么区分客户端跟服务器啊,客户端是客户端,服务器是服务器,你不要就是搞得是乱七八糟的啊,你要分析清楚,行了,咱们这节课就先到这啊,先休息一下吧。
我来说两句