00:01
好,这些我把它全部关掉啊。来,我们把课件打开。稍等啊。好,我们找到课件。我们来看一下啊,我们来看一下过滤器叫filter。过滤器是什么东西呢?咱们一起来看一下。这边的这个,呃,这些文字描述啊,我就不带着大家看了啊,就不带着大家去一点一点一点去去读了啊,这个读的话比较浪费时间,我们直接来看一个概念。过滤器我们称之为叫filter,过滤器我们称之为叫filter,那么filter有一个什么功能呢?咱们来看一下啊。这是我们的客户端。这是我们的服务器。好。
01:01
然后呢,我们一个客户端,他可以发请求给我们的服务器。发请求给服务器。比如说他发了个请求假设啊。我们就随便写一下代码,01点度。啊,有同学问我,老师,你为啥总喜欢加个点度,不加行不行?不加完全可以。不加完全没有问题。只不过早期的时候,我们有很多企业里面,我们在写的时候,我们喜欢写个点读,或者喜欢写个叫点action。这是以前的框架遗留的一些语法风格。啊,比如说我们早期一个非常出名的框架叫stra。它里面的语法风格就是喜欢加个点度。我们以前还有一个框架叫web work。他早期的时候啊,很多时候喜欢加一个后缀叫点action。所以所以呢,不排除啊,不排除大家以后到企业里面去,你看到项目代码的风格还是会加这种后缀。啊,所以大家不要觉得这个很很突兀啊,这是很正常的一个现象好不好,那不加行不行,不加也没问题啊,杠点代码零幺没问题。
02:07
设置一些杠代码零要点HTML也没问题,我的后缀名我就故意写个点HTML,那别人还以为我访问的这个HTML页面的是吧?但实际上不是的啊,那仅仅是个假象。再来,咱们继续一个请求发过来了,我们叫01点度。那本来我们是要经过谁呢?本来我们是要经过一个。这个萨拉塔我们称为叫DA01。那么它里面会去执行的service方法。这个应该不用我说太多了啊,Service或者你什么执行do get呀,都put是不是都行啊。这个咱们就不再说太多了啊,再来现在我的想法是什么呢,同学们。现在是这样的。我们在它前面,在这个前面,咱们可以新增一个叫filter。我们在这个位置。我们可以新增一个啊,我们这叫filter。
03:02
把它写小一点啊。好,咱们可以写一个。代码零幺。那么这个零幺。我把它写到上面去啊。这样可以把它变大一点。这样我就不需要换行了,好,就这样的01FILTER。OK。一个请求发过来了,首先被这个过滤器拦截。拦截了之后,他还去执行一个事情操作。比如说我们拦截下来之后,我们打印一下hello a,就打印hello a。或者打印hello a 1a1a2a三都行,随便你啊,就打印hello a。再来。那么这个filter它里面中间有一句话。我们称之为叫放行。他必须得放行,他不放行是不行的。
04:05
把它写在这。放心。啊,他必须得放心。放行之后,然后我们才会到后面的。所以才会经过这个。啊,才会经过他放心。然后呢,我们的。我们的。往下拖一点啊放到这。我们的呢,四维方法处理完之后是不是会响应啊。是吧,同学们会响应,所以它还会再响应回来。啊,再响应回来。那你注意响应回来的时候,并不是直接响应给客户端,又会被这个给拦截。比如说他再打印一下hello a。Hello,哎呀,我这个字现在好奇怪,怎么一会大一会小。
05:04
刚才不是亮吗?好,就叫hello a2吧,就这样子。然后呢,Hello a执行完之后,他才会把这个结果才会响应给我们的客户端。是不是就在我们前面多了一个过滤器啊,叫filter。这就是我们filter它这个工作的这么一个特点。请求过来的时候,他会拦截,然后中间有一句话叫放行,放行完之后这个请求才会交给后面的S处理完之后响应,诶响应回来之后,他又给我拦截了,拦截之后再执行他后面的代码啊,然后再然后再响应给我们的客户端。下面咱们把这个过程通过代码的方式咱们来演示一遍。OK。我先把它保存下来啊。好,我们把它放到这。这个称呼叫future。呃,那这样我们现在来建一个project要求行吗?同学们,我来新建一个啊,所以回到这右键。
06:03
6MODEL。好,Web application,下一步PROJECT19杠。我们其实也是API啊,咱们写个叫filter吧,或者我写个叫我写个叫filter,然后呢,Listen呢,我也把它放到这里面啊。好,就这样吧。那么现在呢?现在你看好了,我首先先来新建一个叫DOUBLE01,我先把这玩意儿先建出来。新建一个代码零幺。好。Package。com.at硅谷点,比如说我就把它放在这个包里面。OK,没问题。再来,那么我让他我要继承继承HTTP是不来。
07:00
那么哎,这玩意儿没有,没有的话,咱们是不是要把这依赖把它加进去啊。那行,咱们加一下吧。回到model,回到要求,回到dependency dependency在这,然后点加号,点击library,找到Tom get,没错吧?再来,再打包,这样就没问题了,好。那么我们重写一下service方法。就是他。我把它修改一下啊,如果大家觉得这个修改比较麻烦,你可以去设置一个模板啊,你可以设置模板。再来,那么这个方法里面咱们就比较简单了,首先我们在这个方法里面,咱们就打印一下01SERVICE。打印一下。零幺。表示我这个响应了吗。然后我再跳转给别人。Response点三或者叫request随便了啊,随便你用哪个都可以。Request get request dispat。跳转,比如说我跳转给Su cc.HTML。
08:01
跳转给这个页面行吗?同学们跳转给他,所以呢,如果大家觉得你不想报404,你就在这个下面写个Su cc.HL。啊,无所谓的,你不写的话,那就报个404嘛,说找不到SUCC嘛,一无所谓吧,这不重要啊行,这个我已经把它写好了,那么我需要把它配置一下。Web。斜杠单01点度数了。同学们,我们现在把它。把它扔进去啊,现在这边好像还没有啊,看一下artifect来没问题,幺九。咱们就叫pro的要求行吗?同学们就这样应用一下。然后我们这边访问的时候,我们写个叫幺九。代码01点度没错吧,行,把这边改一下。好,应用OK。好了,这是我们的一个基础知识啊,回到这个图,现在我们是没有加这个。Filter filter过滤器,那么一个请求代码零要过来的时候,我们这个里面的service方法会被执行,然后会给我们打印,打印完之后它进行转发,转发给Su。
09:07
就是响应给别人吗?啊,把SUCC响应给别人,响应给别人的时候又会拦截。我们来试一下啊,或者把这个Su把它写出来啊,稍等一下。回答他,咱们新建一个。好,这是代码01点度。怎么没怎么没有报错呢?代801SERVICE。然后把Su c.H里面,哦,我真是的。大家也没提醒我,后面还有forward,忘写了。是不是啊,大家都没发现啊。这个就完了,这个充分暴露大家这个API,这个和我一样不熟悉啊啊。再听吧,大家。啊,再听这个,别以为我说半天大家都还没回过神来上课了吗?是吧,嗯。
10:00
来看我屏幕啊。那行。我们新建一个啊,咱们新建个succ吧。H succ点稍等,你看现在这个404啊,他没有嘛,无所谓啊。这边打印出来了没问题啊,那行。咱们新建一个。列出一个HTML。咱们称之为叫Su cc.HL。然后呢,咱们这里面就比较简单了,1SUCC行不行啊,就这就可以了。那我们要不再返回试试啊?哎,跳过来了吧。到没问题,行。那下面呢,我们把这个过滤器把它加进去。好,回到这边来。我们刚才呢,我们写了一个叫01FILTER。那行吧,现在我来新建。FS点01FILTER。
11:02
我新建了一个filter。呃,我怎么让它这是一个普通的类,我怎么让它是一个过滤器呢?好,我们需要去实现implement,我需要去实现一个叫filter。注意别导错了,你觉得会倒哪一个?第一个吗?回答这么干脆吗?加YX点是吧,呃,应该是它啊,Filter也属于我们规范。也属于let规范。规范里面包含了,我们也包含了filter,也包含第三个叫listen。啊,这三个都属于select规范行,我们实现它的其中的方法,一实现大家就非常熟悉了。你看一下。Elite do filter destroy。是不是有点类似于我们的生命周期啊?初始化服务销毁吗?哎,他其实也是这样的。好了,那么这个初始化我们暂时先不管它,Destroy,我们也不管它,我们看中间这个叫do filter。
12:06
啊,我们看这个方法。当我们。当我们一个请求过来的时候。我们的我们的do feel的方法。我们的多field方法。就是我们这个蓝框框,现在我把它写在后面,我用红字写在这啊。加到这,这个叫do filter。好,把它放在这,叫do filter。那么首先我在这个多费的方法里面,我首先打印一句话。叫hello。你看一下,我们首先打印hello a。打印完helloa之后,我们要放行诶。是不是,那放行是什么呢?好,我们这个方法呀,读费的方法有三个参数,第三个参数叫欠。欠是什么?呃,链条的意思。
13:01
这个欠不是指的小倩是吧?这个欠指的是链条。哦。我们来看一下啊,链条啊,就是链子嘛,是吧,链条。稍等啊,这个有点慢。好,你看一下链链条的意思是吧,同学们,这个叫欠。啊,好。所以我们怎么去放行呢?我们在这边写一下。放心。叫fe.do filter。然后把我们的request对象放进去,把我们的对象放进去。这句话就表示放心。所以放行的话,呃,这个箭头就放行过来了。然后就要执行后面的service了。然后我们再回来响应跳转,回来转发的时候,响应要响应给客户端,要响应给客户端又会被他给拦截。它会执行我们放行这句话下面的代码。
14:00
所以我们就把这句话下面再写,再写一行。Hello a2,咱们是不是写了个hello a2呀?没错,我们试试呗,这就是我们一个filter啊,中间这句话很关键,所谓的叫放行这句话以上的部分。是在请求发过来的时候还没有到斯之前被拦截了,要执行上面部分。啊,当然,我这边只写了一句话,你上面可以有一大坨一大坨代码都没有问题行吗?同学们,总之只要在这句话之前。行,然后我们处理完之后要响应回去的时候,哎,要响应回去的时候,我们要执行这句话之后的所有代码。好吧,我们把这个把它配一下。你猜一下注解应该怎么写?我们之前是不是叫web?哎,外表啊,恭喜你,猜对了。好,就这样的,咱们写一个叫代码01点读。哎,那这个配置是不是和刚才。一样的是吧?啊,确实是的,你不写一样的,人家怎么知道会难解这个请求啊,如果你写的代码02点度。
15:06
那请问一下这个filter是不是拦截代码领导点多啊?那请问我画的这个图,假设我发起给代码领导点路,这个会不会拦截?啊,它不会拦截的啊,它是不会拦截的,所以这两个咱得写一样代零要点度。好。这是我写的web filter,那我问你同学们,如果我们不用这个注解,如果我们用配置文件,你应该怎么写?我们以前是不是写和麦网?现在呢?那估计是future和future卖品。行,咱们30秒快速的来写一遍。回到这儿。比如说我们写一个filter,你看它有的filter和filter mapping filter name,那咱们就写个代码01FILTER。再来。代零幺是吧,来mapping。来代码01128杠代码01点住是不是和之前select一模一样,就是把select这个单词换成F吗?
16:08
没问题啊,这个咱们就不再啰嗦了,把它注释掉。咱们用注解,用配置文件都可以。那行吧,下面我们进来把它运行一下。咱们来试试啊。好,我再回到之前的read me。回到这儿。啊,我们讲的第一个知识点叫过滤器啊。稍等一下。我就在下面写吧。好,第一个知识点过滤器。好了,他已经发请求过来了。啊,已经跳转给SUCC了,咱们看一下控制台打印的内容内容。你看一下是吧,Hello a。来,首先。过来的时候被拦截执行哈A。只希望哈A是不是放行?
17:02
放行完之后,它是不会执行service。只喜欢斯维斯,它是不是会响应?想一回去是不是又会被拦截就好多A,是吧,同学们。好,这个不管它,我们每次ID重启的时候,它总是会给我请求两次是吧,同学们下面一次是重复的啊OK。所以这是我们过滤器的一个基础知识。好。也属于。啊,它也属于色料的规范。我们的filter它的步骤。Field开发步骤。我们要去新建类。实现filter接口。然后实现其中的三个方法是吧,三个方法。的初始化。Do filter服务destroy。销毁是吧?同学们,我们需要去实践其中的三个方法。啊,咱只不过啥都没写嘛,我们就看这个方法do filter啊还有。
18:05
然后呢,我们需要去配置。配置。配置filter。可以用。注解。Web filter。也可以使用XML文件。那就是和我们的filter mapping。行吧,同学们,这边我就不再去详细的写了啊,这就是一个基础知识。再来。我们这个过滤器啊,它只会拦截代码01点度。没问题。那么我现在把它注释掉。这个过滤器呢,我这边还可以写通配符。我可以写通,佩服。Web filter。新点。前面没有斜杠。那你写个新点读,是不是只要你是点读解就我多难解啊。
19:04
那这样的话,这个拦截器。我就需要把它画的大一点了。啊,就把它往下画一点。他拦截的就比较多了。好,就画到这吧。好,就这样子。OK。差不多意思一下吧,啊就这样。好,没问题,那这个过滤器它不仅拦截这个组件,还拦截第二个组件,第三个组是不是都拦截啊,哎,就这样。我们写个叫新点度,那么我们来验证一下,这是DEMO0这这是代零幺,咱们新建一个腾讯费DA02。零二里面我们写个叫DA02点读,然后这边写个02SERVICE行不行。那我们来刷新一下。
20:02
我们看一下啊,这两个select,我给这两个分别发请求,我们看下这个过滤器是不是它是不是它都能起效啊,都能生效。好,我们回到,回到这儿。稍等啊。首先第一次啊,我们初始化的时候给代零幺发请求啊,看一下你看是吧,Hello a01service hello a,没错吧,没问题的,清空掉,咱们再试一次呗。我们再去给戴02点多发请求,看他会不会拦截敲回车。哎,他是不是也能拦截,Hello a hello a2是吧,他两个都能打印出来啊,咱们访问的是代码零二。就这样的,这就是我们这边所写的通配符。Filter。在配置时。啊,和一样。一样也可以配置通配符。
21:00
比如。内容我们可以写个叫。Web filter。然后我们写个心电度。表示。拦截。所有以。电镀结尾的请求。是吧,同学们啊,表示拦截所有一点度结尾的请求,OK。好。这是我们。说的第二个小的知识点。第三个小的知识点,我们叫过滤器链。过滤系列。什么叫过滤式链呢?来,稍等啊,我回到画图,回到这边来。我把这个缩小一点点啊,还是不画这么大哎。把它放到这。差不多。再往上再缩缩缩一点啊行,就这样吧。下面呢,这个上面这个图就不看了啊,我就不再去新建图形了啊,就在这里面写。下面呢,你看好了,同学们。
22:01
我这边有个过滤器,这是第一个过滤器。我叫F01。我再来第二个顾虑性。我叫FUTURE02。这是第二个。我在的第三个过滤器叫F03。就这样的。经过了这三个过滤器,后面才是后面才是我们的组件的。这才是的组件。那么当我们一个请求过来的时候,首先。会被我filter雷妖。拦截。啊,执行里面的内容。好,我们把它标注一下。我们写一下。这个叫F01,我就这么写啊,叫零幺。下面一个我们称之叫F02。我把它画到这。F0,二。第三个我们叫F03。
23:04
零三。那行总共有三个。一个请求过来的时候,F01会拦截我们,让他打印其中的代码。咱们就打一句话,A。打印print。诶,我就写伪代码行不行,同学们啊,我就这么写了啊。然后咱们要放行。再往下,我们再打印一下print。啊,比如说我们打一个A2。那行,他去放行。放心给他。放行过来。那么这个里面我们也要去打印。打印print b行吗?Print。答应完之后,他也会放行。然后我们打印。B。就这样吧。
24:01
再来,那么他也会放行。啊,放弃给后面。好,那后面呢,我们再去打印。打C。Printer c。然后呢,放行。然后print。C2。就这样吧,然后再往后。再往后才是后面发请求呢啊在真的发钱给他。假设它里面咱们就执行一下,执行一下service啊,打印一下SERVICE03嘛。或者叫大零三啊也行。答,一句话。代码零三。Service。好,就打印这个。行吧,同学们,我就这么写了啊。然后再放,然后再响应回来。
25:00
响应回来。那咱们一起来看一看,请问一下咱们这个代码它打印在控制台,打印的顺序是什么?打印A打印B打印C,因为打印完之后就放行嘛,放行被下个拦截,打印B放行放行之后打印CC之后放行放行执行它代码03SERVICE执行完之后响应响应首先被F03给拦截。然后打印C2,然后再通过打印B2,再通过打印A2,最后响应给客户端。是吧,同学们行,那前面这三个过滤器我们就称之为叫链过滤器,链。过滤器练我们是有比较重要的应用的。在我们实际开发当中。我们每一个过滤器,它的角色是不一样的。
26:01
一个过滤器,它只负责完成他的本职工作。那么我们在一个控制器,在一个控制器一个请求过来,控制器在处理之前,我们会经过N多个过滤器去做一系列的事情,每一个过滤器它只完成它的功能,最后把所有的准备工作全部做好了,再交给我们的去处理,再交给我们的控制器去处理。前面的工准备工作可能会有很多。啊,这就像是一个流水线一样的。比如说对吧,我们要要要要制作这个黄焖鸡是吧,最后的这个它就是个厨师,他只负责制作啊炒炒菜是吧,那前面要经过很多的工序,第一个过滤器做啥。杀鸡是吧?第二个过滤器要做啥?把这个鸡毛全拔了是吧,把它处理干净,第三个过滤器要做啥?哎,他要需要把它这个鸡得多快是吧,得需要腌制。啊,把所有的配料全部准备好,那么最后再经过厨师呢,是吧,同学们啊,就是这样啊,每一个过滤器他只负责他的一个工作。
27:04
我们称称主叫过滤器列。当然了,我们其实还有一个另外一个比较类似的叫拦截器。叫intercept,那么我们也会叫拦截器链,或者叫拦截气站。啊,每一个拦截器也负责完成自己的事情。啊,其实这个思想其实差不多。那行吧,咱们来看一看。我们把这个代码来写一下。所以呢。我首先准备一个代码零三。直接拷贝啊,根据C根据V03。好把它打开。改成DA03点读这个我就叫DA03SERVICE行吗?同学们,然后跳转给他没问题。那下面我就要准备多个filter了。我在那边写一下。我这个写个叫F01。行吗?没问题吧,叫F01打开。
28:01
他拦截星点都没问题啊,上面的注释删掉零幺,首先我们看一下啊。哎,图呢?先打印A是吧,行,那我们就按这个图按这个来啊打印A。那这个打印的是A2是不是。没问题。拷贝零二。好零二没错,这个单音B,这个单B2。好。再来零三。好,那这个等于C。就等于C2。就这样子。呃,为了防止干扰这个过滤器,我先把这个注释先做上。啊,先把它先注射掉,那这个过滤器是不是就不生效了。好,那下面呢,咱们再来看一下啊。010203。人家说老师三个过滤器,你咋知道,他们就按照顺序010203的。
29:04
好,咱们启动的这个过程,我就顺便给大家说一下。如果现在我们使用的是注解的方式,那么过滤器的先后顺序是按照它的全类名决定的。是按照全类名字母的顺序来决定的。好,他现在已经访问success,或者这样吧,全部清掉,咱们再次刷新一次。啊,一刷新我们看一下打印的内容。你看一下ABC。哎,怎么弹码零幺。啊。哦,我们请求的是W01啊,是吧?同学们,我网页上访问的是W01吧?但不管怎么说,三个过滤器也能拦截,为啥?我写的都是新点度吧。是吧,同学们没问题的啊,他也可以拦截,OK。你能知道我在说啥吗?即使我这边没改,我访问的还是代码零幺。然后我们三个F是不是都写的新点度啊,所以对于代码零幺是不是也能生效啊。啊,没问题的啊,行,你再看后面C2B2A2,咱们再看这个图,C2B2A对的吧,哎,先过去ABC啊,然后执行,执行完之后C2B2A2没问题。
30:10
你看就这样子。好,咱们顺便说一下他们的执行的先后顺序。你比如说这个叫代码零幺,对不对。我们的包名都相同吗?四个过滤器是不是都放在这个包里面?所以我们只能看这个类名D字母是不是在F字母的前面。D这个字母在F字母的前面,所以我认为如果把代码零幺把让它也生效的话。那你觉得是先执行这个123,还是先执行单零幺。哎,那肯定是先执行代码零幺来行,咱们试一下啊,再刷一次,它里面执行的是hello a,那你觉得打印的顺序是什么。是不是我们会在A之前显示一个hello a在A2后面是不是会显示一个hello a2啊?啊,是吧,同学们就这样试试看啊。
31:03
我们来看一下。你看。Hello a ABC,代码01C2B2,你看HELLO1没错吧,他确实是按照顺序的。那么如果是配置文件。如果我们写的配置文件里面。他就不是按这个圈里面的顺序了,是按照你在这里面配的先后顺序。谁先配的,谁先拦截。行吧,同学们,谁先配置的,谁先拦截。好,我们把它写下来。回到这儿。好过滤系列。啊,过了系列。第一个我们把它写在这,我们打印的是A。C。零三。然后打印C2。必要必要,我这么去写,大家应该能知道啥意思吧?行吧。执行的顺序。意思是啊,就这样子。
32:02
第二个。如果采取的是。如果采取的是。啊,注解的方式进行配置。那么。啊,那么过滤器。锅炉系列的顺序,拦截顺序。是按照全类名。啊,全面全列名的先后顺序。排序的。如果采取的是。X的方式进行配置。那么按照配置的先后。顺序进行排序行吗?同学们,那你说老师。我一半采取注解,一半采取配置文件啊,这个就不要这么无聊了行吗?你要不就全是注解,要不就全是配置文件行吗?啊,你不要这个一半注解一半配置文件,那这个谁能搞得清啊。啊,你就自己做个实验嘛,行不行,同学们啊,OK。
33:04
这是我们所谓的叫过滤系列。那么关于这个过滤器的这个基础知识啊,我们就就把它说完了。好,这个要不我们视频就不断了啊。那么过滤器我们可以做个小的应用。我们回到二零这个项目。我们二零这个项目当中,大家想一想,我们现在它的这个结构是什么呢?打开看一下。Filter,我们filter里面有个叫controller。啊,有了,我们回到我们的图。或者我们直接画一个吧,啊,这个保存一下,我们新建一个。我们当前的库存系统,这是客户端。这是我们的服务器,注意听啊,注意听,看屏幕啊,发一个请求过来。我们发了个请求过来了。那么我们在这个当中是不是有个叫中央控制器啊。一个中央控制器。
34:00
好,我们叫。或者叫核心控制器都可以。Dispatch of that。然后呢,我们Dis despite,再把我们的请求啊,我们再去,后面会有一堆的C。啊,会有一堆的CTRL。好,这是一个坑区了。那么可能还有其他的CTRL。好,比如说订单相关的order。Controller。啊,比如说用户相关的user control等等等等。Controller。再往下还有其他的啊,不写了啊。好,发给他。啊,或者调用它。
35:00
或者是用它。或者是用它就这样的。那行,我们想说的不是绕,我想说的不是这边。大家回忆一下。我们是不是在我们的这个CTRL里面要获取参数,现在我们已经全部归到核心控制器里面去了。那么我们在核心控制器里面是不是要进行这个转码的操作,叫设置编码的操作。啊,要进行设置编码,现在呢,我可以专门写一个过滤器。这个过滤器我就放在前面。这个过滤器可以帮我们做一个设置编码的事情。设置编码。啊,我们称,我们称之为叫character。Character。Including future。当你的请求过来的时候,先经过这个过滤器帮我们做一个设置编码,设置完编码之后我们再放行。再放心给后面的核心控制器,那么在核心控制器里面你就可以很放心的去做你的事情了,你就不需要再为了这个设置编码而担心了。
36:00
啊,我这个设置编码是不是不是一定要是不是现在是不是能够保证是否在第一第一行啊,啊,你不需要我们首先经过过滤器,过滤器帮我们做设置编码。那行,下面咱们就把这个做一下。Including future。好了。那么呢,我们回到二幺,呃,就二零嘛,二零这个啊来。Com at硅谷。我们来看一下。比如说我们在这个当中。啊,比如说我们就在这吧。我们新增一个。叫fes。点。LA character。Filter。好,就这样子,然后我让它实现,实现filter。然后实现其中的三个方法。然后。我就可以在中间。
37:01
一般情况下养成大家养成一个好的习惯,请你在这边把filter点欠do这句话。请你先把它写上去。要不然你忘记就完蛋了。你忘记了他就不放行了,他只负责他执行里面的代码,执行完了就算了,他不不往后放行了,你不往后放行,是不是后面来的就不执行了,那你的这个网页上看到些大空白啥都没有,但他也不报错,那大家会觉得咋咋还不报错了呢,是吧。啊,机制问题没有放行啊,后面代码根本就没执行。好,那么我们在这句代码之上,我们要执行一下,我们先http request。啊,咱们先强转一下。先把我们当前的这个request对象先强转。强转完之后,我们再去set u TF杠八。行吗?这句话就是完成设置编码。没问题吧,同学们。这是。它的一个负接口。点进去看一下,点进去。当前叫http request,是不是不继承这个接口?
38:03
那你说老师干嘛还搞个借口呢?啊,它是一个,它是一个宽泛的一个接口表示请求。前面加了个HTP前缀,表示这是基于HTTP的一个请求对象。啊,它是这么一个关系。所以我们给他设置一下编码,那么当前这个color我们写一下web filter。我们也拦截信电度。行不行啊,可以的啊,没问题,就这样。那么这边如果你不想写死了,我们还可以在配置文件里面去进行配置。假设你不想写死的话,因为我们这个写在Java类里面去写死了,你可以把这个编码可以把它配配到配种页里面去。所以说我可以做一个稍微做一点点小的变化。子俊。默认情况下的F杠八,我设置个成员变量,叫including,叫UTF杠八。啊,然后我在这个in的方法里面,我去读取这边不是有个叫filter config吗。
39:05
点get parameter是不是我在这里面写个叫including。我就要去读。然后使俊。Including SL,然后我们判断if,子俊有点is not empty,哦,如果你不是空的。如果你不是空的情况下,Including。我们就附上去including SD。能看得懂吗?这样我就把它写好了。那这样你不配置也没问题,你不配置的话,稍等一下啊,这个encoding是不是就放到这儿了。是不是啊?这个也变得比较灵活了。那这样的话,如果说我们没有配置初始化参数,就使用这个默认值呗。如果你配置了,那就是用你配置的。URL patterns,咱们把它写一下啊。我们有个叫in。里面我们把它配个叫web in。
40:01
好,然后这里面我们有个name name等于including。然后value,比如说我们配上GBK,假设意思一下啊,是不是这样的,只要我们写的这个初化参数,那是不是我们在初始化的时候就会把这个值读到,读到之后是不是就付给他呀。然后如果它不等于空,是不是就把这个UT杠八给改掉了,改成GBK了是吧?同学们,那如果我没有配这个玩意儿,如果没有配它,那你是不是读不到,读不到是不是它这个if就不执行啊,不执行的including是不是就使用默认的uf杠八呀。能听懂吗?这个小变化应该能听懂啊,行,这个地方我还是把它改成UTF干包啊。就是这样的。那我们这么一一操作之后,我们再回到中央控制器despite。它里面的编码操作。这句话。还要吗?不要了,注释掉。直接把它注释掉就可以了啊,就是这样。不运行了啊,肯定没问题。
我来说两句