00:00
大家好,我是上硅谷张爱英语学科的韩延冰,接下来和大家分享一道面试题,在threec中如何解决post请求中文乱码问题,那么get请求又如何处理呢?我这里呢,有一个表单。学过springc的同学都知道,诶,在这个spring Mac处理这个PU入参的时候呢,表单里边这个内幕属性值一定要与我们的这个PU类的属性名儿要保持一致。来看一下啊这块啊,我们的属性名呢是ID,所以啊这一块你的这个内幕属性的呢,必须要保证和内和这个属性名要保持一致,Mac才能将。表单里边这些数据呢,给你封装到这个in play也有,也就是我们的PU对象里边,所以呢,这点要注意啊,那下面啊,我们先把这个现象演示出来,诶我这个表单呢,提交的是一个POS请求,那将来呢,这个请求会嗯,提交到我们这个spring m Mac handle了,这个处理器的这个test PU这个方法里边,那么在这个入参的in play里边,这些play的一些属性。
01:08
到底有没有值,如果有值,哎,如果我输了中文,哎,看一下会不会乱码,好,下面呢给大家演示一下。来啊,我刷新一下,我在这呢,输入一个工号,比如1001,哎姓名呢,哎韩总邮箱。部门1001,部门名称教学部好,下面呢,我们来提交。好,来看一下在我们这一个处理器的这个方法里边得到的员工信息是,诶101,诶大家发现last name由于我输入的是汉字呢,诶它变成了乱码,同时我们后边的部门这个name呢,也是乱码,那么针对于这个乱码我们怎么解决呢?诶首先啊,我们来说一下对于POS请求前提,前提必须得是一个POS请求,那么对于这个POS请求怎么来处理呢?Spring Mac给我们。提给我们这个提供了一个过滤器,来我们看一下ctrl shift的F。
02:00
教一个,哎,就是这个character character including filter这个过滤器,我们来点开它,我们来看一下啊,这过滤器里面呢,有两个变量,一个是string类型的including,一个是布尔类型的force including,而且这个布尔类型的first including是false,默认值是false。来,我们看一下,里边有个核心的方法。叫do field internal,呃,学过过滤器的同学都知道啊,这个过滤器呢,可以将我们的请求进行过滤,然后呢,这个拦截请求之后呢,可以在这个,呃,原始的过滤器里边是一个do field的方法,那在这呢,它是一个do f的方法,我们来看一下这里边做干了一些什么事情啊,这里边呢有一个if判断,哎,This including,如果你这个this including不等于now。哎,我们这个当然了啊,如果你没有设置这个including的话,默认值它就是闹,也就是说如果这是这是个是闹,如果它成立的话,也就是说这是true,后边这个条件呢,也是true的话,才能进这个if附条件判断啊,后边这个呢,This false including,或者是后边这个嗯,有一个为true呢,这个条件都成立,那么也就是说this first including,如果你把这个false including设置为true的话,那么这个条件呢将成立,也就是说。
03:07
即将进入这个if条件判断,那我们看一下if里边都做干了一些什么事情啊,request.set character这块就是就是设置我们请求的一个字符集this.including里边传的值就是this.including如果将来我们把this.including设置的值,比如是U伽八,那也就意味着我们将这个请求的这个字符集设置为了utl杠八,下边呢,还有一个if判断this.false including,如果我们配置的时候把false including置为配置为true的话,那么也就意味着呢,也能进这个if,在这个if里边呢,用户response.set character coding,也就说我要设置这个响应的字符集,其实啊,对于我们刚刚发的这个请求呢,只需要设置个request的一个字集就可以了啊,请求的一个字符集,诶,响要的字符集诶。可以不不设置啊,那下面呢,我们就来用一下这个过滤器来解决一下我们这个post请求的乱码问题,那么需要配置一下这个过滤器,所以呢,我们来复制一下它的权利名。
04:02
选中这个类,右键copy fair name,找到我们的web的插边,在这呢,我们来写一个注释。注意啊,这个呢,设置字符集的这个过滤器呢,要配到我们web上面的最上面啊,也就是第一项呢,你要配它,所以呢,来说一下啊,解决post请求,注意前提是post请求的这个,嗯,请求乱码问题。怎么解决呢?配一个过滤器,Filter。好的鞋盖好,里边呢,我们来一个filter的一个name。再来一个filter的一个class class我们刚刚已经复制过了全类名粘过来,然后我们把这个名字呢,就取为这个类的一个类名。CTRLV,好,下面呢,我们需要给这个过滤器里边这个including啊,或者是force including,哎,还有这个false including啊,当然了,First也可以不设置啊,把它修改一下它的这个值,也就是让它初始化的时候把这个值给它附上来,我们设置一下,这里边有个标签叫in it。
05:04
就初始化的一个参数,参数名,他的一个name。那怕name呢,就是我们这个。过滤器里边这个including ctrl c粘过来。CTRLV,好,我们来设置它的PAL的一个value,它的值那就设置为utf杠八好保存一下,还有一个false including啊,其实呢,我们对于请求乱码问题这块可以不设置,那么我现在也设置一下它啊,就是为了练一下这个初始化参数。In。还是设置响应乱码的。一个字符集啊,P的一个name,那这个name呢,就是我们这个。False ctrl c粘过来。CTRLV,那它的值呢,我们设置为true。所以这块啊,它的值不是U杠八了啊,注意是一个true,也就是当它为true的时候呢,我们这个do feel在internal里边这块呢,也会设置一个响应response.set including也是this.including就是我上面上面设置那个U干有响应的乱码,响应的字符集也设置为U,好,这是注册这个filter,那下面我还我们还需要有一个映射,所以呢,Filter的一个mapping。
06:12
好,里边呢,也有两个核心的标签叫name。You name,当然呢,必须要跟它保持一致,CTRLC粘过来。CTRLV,好,下面呢,需要有一个URL的pattern,我要拦截所有的请求,好,斜杠星好,我们把这个外部的插面配完之后,过滤器配完之后呢,我们来清一下,我们重启一下服务器。我们再来看一下,这个时候POS请求这个乱码问题有没有解决。好,我们等一下啊。好诶来,我把控制台呢清一下,好我们回来我们刷新一下,重新工号1001姓名韩总邮箱。部门编号部门教学部点提交好来看,诶大家发现这个时候呢,我们再输入汉字的话,这个。用户名,还有我们的部门将不再是乱码,好,但是这只能解决我们POS请求,如果我把表单改为get。
07:11
Get,好,现在呢,我把控制台再清一下,我们来回来我刷新一下。右键查看源代码。哎,我们已经改成get请求下面呢,我们来重新输入一次1001韩总。101教学部点提交来我们再看一下,诶,大家发现。如果提交的表单是get请求,诶我们的last name和部门呢,诶又乱码了,那么针对于这个问题我们怎么解决呢?诶注意啊这块呢,有其他的这个方式,那么最简单一种方式什么呢?在我们这个服务器service的一个。Server叉ML,也就是它的一个server配置文件,点开它找第一个connect标签,第一个connect标签,我们来往下翻,找到第一个connect标签。
08:04
好在这在这呢,加一个属性,加一个什么呢?加一个uri。Coding。等于UTF杠八,这是最简单的一种方式,Utf。当然大小写无所谓啊,UTF杠嘛,好保存我们加一个它,然后呢,我们再来重启服务器。好在这加了一个UI including等于UTF杠八。好加完之后呢,我们把控制台清一下,我们再来测试一下回来。刷新1001韩总邮箱工号部门提交来看,哎,此时我们的中文乱码问题,哎,这样解决了,所以啊,下面我们来总结一下对于SPAVC中如何解决post请求的中文乱码问题,怎么解决呢?我们需要在web点叉ML里边配一个过滤器,也就是spring Mac给我们提供的过滤器叫character including filter,哎,配一下过滤器,过滤器里边啊,其实呢,我们只需要配一下这个初始化参数叫Co,设置为UTF伽码即可。如果你也想试一下响应乱码的响应的个字符集,诶,需要配一下这个force including这个。
09:18
呃,属性的设置为true,哎即可,那么对于get请求,诶,我们怎么处理呢?需要修改tomcat的一个配置文件serve点叉ML在里边呢,找第一个connect标签,在里边加一个UI including等于utf杠八这个属性即可,好。好哎,那这那这个呃,面试题呢,我们就分享到这里。
我来说两句