00:00
那么下面呢,我们就来看一下啊,具体的应用我们讲三个例子。前两个都是统一应用的字符编码的,我们先来看第一个。我们知道啊,对于请求的字符编码。那么。Get提交方式。请求中的中文乱码问题的解决方案和。Post。提交方式。里边这个参数的中文乱码问题。这个解决方案是不一样的,但是响应的。都是一样的。那我们直接来写代码看一下啊。嗯,我们现在看的是post提交方式的。
01:03
一玲。这个叫什么?嗯。Character。Encoding。这仅仅是post的啊,就这吧,就叫这个名吧。切换回视图了。好。咱们这样。我给这儿来个表单。来个表单,index.jsp。For。Action。
02:02
Method。是post啊。用户名input type等于。Name等于username。Input type等于submit value等于提交吧。这样吧,咱们就写成登录。那这儿写什么?Page contest.request点。
03:01
Contest。Solid OK,表单有了,现在solid是不是没有啊,没有我们就来一个来一个so。Solid。Com点。北京power no.so。Log in solid。都都加上了啊。
04:00
都盖了do post,我这都写了啊,我这都写了他们。我这要接收请求参数。request.get。Parameter user。Name name。然后呢,我们给他输出一下username OK,就这很简单。
05:01
现在跑一下吧。你注意我这儿现在装了俩Tom KT,一个是九,一个是七,Tom k7我们先在九上跑啊,先在九上跑。张三。走。乱码吧,不过你需要注意一点啊,你看。如果我把它改了,改成get。刷新啊,好登录。他是不是不是乱码呀。这个不是乱码啊,这什么盖的方式不是乱码,这个主要是因为什么,他开的酒,它解决了这个问题了。
06:03
所以我们在这个。例子里边啊,不使用他们开的酒。我们用他们开的起。用他们开的棋啊。RA as。七。你看着现在用的什么get的方式啊?走。乱码对不对。Post方式。刷新早。是不是也乱码?诶,我们在七里边能测出来啊,在九里边这个钙的方式,这个中文乱码问题,他们看到九给我们解决了,我们就不用管他了,但是你真正到工作的时候啊,你他们开的不一定用的是。
07:08
那么高的版本。所以我们肯定要把这两个问题都给解决了。所以我们在汤姆。项来运行这个应用,那好,现在出现乱码了怎么办?出现乱码了怎么办?当然提交啊,最简单的解决方式是什么?在这request.set characterco utf杠八对不对?重新启动。重新启动。刷新一下。
08:01
没问题吧,是不是解决了。这个解决了,但是它有不好的地方什么呢?将来我们的一个应用里边啊,像这种有表单的情况会很多。你每一个里边都写他。不就写这一句话嘛,也没啥不行啊,是的,也没啥不行,但是这种写法啊,第一。我们应用里边这个代码的冗余度就太高了,这是第一第二假设啊,我说了假设一般我们不会这样的假设。我现在不用U杠八了。我要用JBK呢。怎么办?你如果说很多solid里边都有这样一句话,你要给他换GBK就不好换了呀,因为每一句这个里边的UTF杠八都得给它改成JBK,那很多呀,一个项目非常多。
09:02
所以。我们一般使用谁来实现这个功能?不就是你请求过来的时候,把请求的字符编码改成U杠八吗?我们的是干嘛的?他可以修改你的请求,也可以修改响应啊。对不对,所以我们可以使用filter来实现这个功能,我把它删掉了。这边我来一个。Filter。拿了包先改包是,然后呢。然后我这个叫什么就叫。
10:03
Cat。我就叫这个名了。对什么所有请求都进行过滤。Finish。Yeah。这这这挨着都得杀啊。好,来吧,request.set character in coding u TF杠八。OK了,就这很简单,就这一句话。
11:04
Start。刷新。啊,怎怎么刷新。404了。来。好。张三。走。没问题吧,是不是这就解决了,你说以后你整个应用里边支付编码改了,只需要改。
12:02
这个character encoding filter里边的这个编码就OK了,改了一个地方,整个应用的就全部改了。当然了。这种方案对于。Get,成立不成立?明显是不成立的啊。刷新。Yeah。怎么怎么搞的。哦,你怎么跑这儿了?错了啊,这我说呢。这这个这个的。哦,刚才那个。再重新重新演示啊。把这个关掉。删了都删了。重来。
13:03
要的是七啊。干的方式,看它成立不成立。呀,这盖的方式还真是啊,你看这儿这儿这儿404了。404LOG。啊,我想想啊,我想想。我们看一下。里边对这个filter。但啊,这是soet,这是filter。
14:06
好,没问题。现在这是没问题的啊。重新启动。这应该是淘CAD版本的问题啊。看这。启动的时候就出问题了,是不是。啊,启动的时候。这是他不开的版本的问题啊。他卖了七。你看着我把这儿如给他删掉。
15:12
真没问题了。是不是,那现在等于是我们得找到他。这个F。这个factor。这样啊。我这个换个名儿。叫my character including。
16:00
这换个名。你看还是有问题,看来不是说和系统里边的重名的。但是他要是在酒里边是没问题的。九。酒里边儿是没问题的。那这个版本。这样啊。这个版本我们这样来做。看着我们这样试一下啊。
17:01
我不直接创建,我创建个class。叫什么叫?My character。Filter我换了个名啊,然后让它实现接口。Filter实现这个接口。实现这个接口。我明白了,明白了。嗯。哪儿的问题啊?哪儿的问题,这儿的问题。应该是这儿的问题,我看看啊。
18:17
你看啊,这个filter里边接口里边含有的方法in。Do filter和Detroit。这个。我现在都给它加上,把这俩方法都给他加上啊。这好,服务器都停了啊,启动。Yeah。这个这个这个启动它这个类这儿出问题了。先把它删掉。
19:01
先把它删掉啊。抽象方法错误。删了这个删了。没问题了吧,知道哪的问题不知道。知道哪儿的问题不知道,你注意啊,问题就出在这儿了。
20:04
我们一直用的是九九里边对于filter的实现。他对filter的实现啊。你这这他们害的是什么,是这个。叫什么,他们看的是。规范的实现者,那么他们开的九和他们开的七是不一样的,哪不一样,默认实现是不一样的。在TOMCAT7里边,这俩是没有被实现的。而在他们看的九里边儿,这俩是有默认实现的。所以问题就出在这儿。问题出在这儿啊,加上它就OK了,你看这这都是细节性的东西啊,我们没注意到,好,现在重新跑。
21:01
哎,跑起来了是吧。跑起来了,这样停停了它。删掉,重新来。看他把这个给关了。七。没问题了吧?张三。是不是乱码?就是get方式吧,Post。刷新。走。OK了吧,好了。这是post乱码解决方案,当然了,这对于响应啊,我们可以也可以给他解决了,比如说我这。
22:03
A response get writer。Get right right。这是out。是吧,然后out点。Print。谁我就把他加上去,把它加上去,现在肯定有乱码。大家想想是不是它肯定是有乱码的啊,因为你这里边有中文的,这your name是中文的,它肯定有乱码呀。伤心走。是不是,那怎么解决,同样啊,放到它里边吗。
23:04
有个问题。我放到它里面是应该放到哪儿呢。你说我。这个解决的是。解决。请求中请求参数中文乱码问题是吧,那现在响应的你说我加哪儿加这儿吗。点儿。点儿点儿点儿。Come tap。Test atl。恰等于utf杠八是加热吗?
24:05
有哥们说是,你想想啊,要加到这儿,他执行的顺序是什么。停掉执行的顺序什么?肯定是这样的,先走这对吧,紧接着走这一走,这就走到哪了,走到叉了呀,是不是就执行这个东西了,执行它,它已经把这个out标准输出流已经形成了,你这时候赞执行完他以后该锤了。又该他了呀,你再写他还管用吗?就不管用了,所以这个应该放到哪,放到它之前。他解决的是。响应中文乱码问题,它解决是响应里边的中文乱码问题啊,也就是说我先设置了response了,紧接着该执行他了,执行他的时候诶out。
25:09
过去了,这就没问题了。没问题吧?OK了。那么对于post提交的中文乱码问题。那么。我们的解决方案就写到这儿,你计较他对get是不起作用的。
我来说两句