00:00
嗯。好,那么上一节课呢,我们彻底的了解了一下咱们这个AJS发送put请求失效的一些原理机制,那我们这一节课呢,我就来解决这个问题,当然大家可以不直接来发送put请求,用我们以前的方式来type等于post,我带上杠,Man等于put,这样的话呢,就会来到我们这个web INF web中的这个。过滤器,过滤器呢,帮我们转成请求,但是呢,我们的请求又是post请求的请求体的数据,Comcat也封装,那么现在呢,我们上节课面临的问题就是,如果我直接来发送put请求,Tom cat一看我们这个put请求,哎,不是post,它不封装请求体的数据,那么针对于这个现象呢,哎,我们spring mvc也提供了解决方案,它有一个过滤器,哎,这个过滤器呢,叫HTTP,哎,Put,诶,专门有一个put form content filter把这个过滤器我们来配置上。
01:08
走,我们在web X中,我们来配上这个过滤器,Filter。好,Filter name,记咱们这个filter class,好,我把全里面刚拷过来,好filter name是他他呢也一样,哎,Filter。特品让他来。哎,就是这个过滤器让它呢,URL pattern,我们来截所有请求,把它一配上以后,我们这个页面发直接发put请求就可以了,我们可以来测试一下,先看效果。我来重启。刚刚点错了。我们来重启。重启好,启动我们这个服务器,我们来页面刷新,我们重新测试,我们看现在直接发put请求行不行?好,来到最后一页,还是这个AAA男改成女,开发部改为测试部,好,AA f12来看发的请求点更新,诶请求呢发过去了,也是请求方式是put处理成功了,我们来看,诶我们请求其中的数据也拿到了,我们这个啊,员工的这些信息也都是对的,提交的字段都有,那么呢,我们来页面,那么刚才更新的,我们点一下,诶这个呢就更新成功了,那为什么能成功呢?我们来可以看一下咱们这个过滤器。
02:39
好,这个过滤器在do filter internal里边,哎,其实就做了我们之前没有做的事情,我们来看啊,它判断如果呢,是put请求或者是请求,然后他进来,进来呢,把request get input stream,也就是说把请求体中的任何数据流拿过来,包装成一个input stream input message,然后呢,调用一个form convert,把这个input message啊拿到,把它读取成一个multi value map,哎,我们来看啊,这就是我们一个map而已,哎,它集成va YouTube map,好把它呢,相当于把我们啊这一句话,相当于把我们这个啊put请求,请求体中的数据转化成了一个map,然后大家再来看,把这个map,哎,传进来,把原生的request传进来,返回了还是request对象,但是这是包装后的request,我们来看它咋包装。
03:40
点进去,点进去把原来的request传进来,然后呢,哎,我们这个form啊,我们form这个map就是等于我们传进来的这个map,然后我们来看啊,它重写了get方法,这个方法呢,也就是说我们调用request get的时候啊,不是它在这里边,是先从咱们这个调用类的get在呢,从我们这个map中拿到我们这个值啊,如果当然我们原生,如果能拿到值就用原生的,拿不到就用我们自己的,所以说呢,相当于它获取咱们get permit只重写了get permit方法,获取参数的时候呢,它还要从它自己封装的这个map动,也就是说哎。
04:32
我们没做的事情,Spring mvc帮我们做就是呢,我们需要要能支持咱们这个直接发送咱们这个put哎之类的请求,还要封装请求T中的数据,我们呢就配置上咱们这个filter这个呢啊也非常管用。这个菲尔塔就是htt,哎,这个菲尔塔把它写上,而这个菲尔塔的作用呢?
05:07
它的作用作用,它的作用呢,就是将咱们这个请求体中的咱们这个数据解析包装成一个map,然后呢,我们这个request。Request。被咱们这个重新包装。包装,然后呢,那这样的话呢,Request get parameter就会。Get方法被重写。然后呢,就会从就会从咱们这个封自己封装的漫步中。取数据,所以说呢,我们这个请求体重的数据又重新被取出来,重新能封装成功了,好,这就是我们解决方案。
06:01
解决方案,那么呢,我们后来就这么来做,接下来我们就把咱们这个呃,修改的完整逻辑我们来写完,那么点击编辑,当我们这个难,哎,改完开发部,改完我们点击更新以后,那么我们不应该是弹出处理成功,而是关闭对话框,在哪一页改的,还是回到本页面,所以说呢,我们把这个in对在这里边来重新处理。这块呢,第一个就是关闭咱们这个对话框。回到本页面。好,那么关闭模态框啊,我们非常简单找到咱们这个模态框。好,找到我们这个模态框,调用点model。到咱们这个head方法,哎,我们之前都是这么调的,它就关闭了,那么接下来我们来看怎么回到本页面,就是呢,改完之后啊,重新发送AJS请求获取本页数据,那么这个数AJS请求我们之前都已经抽取出来了,哎,我们来看啊,要去第几页,哎,就是它就行了。
07:17
好,就是它,哎就是它关键这个本页面我们怎么知道当前页是第几页,哎,其实我们可以在这一块,在我们在这里边构建咱们这个本页的分页条信息的时候,哎,我们来看啊,这个配置应符,这不是有咱们这个当前当前页嘛,把这个当前页我们给也像咱们这个总记录数一样,我们可以保存起来啊,比如呢,咱们去找。Current咱们这个number,那当前的咱们这个current page,当前页拿过来,我们呢,在这一块构建分页条的时候,好就在这。好,把咱们这个本啊,当前的这个页码也给它复制上,好复制上,那么以后呢,我们每次要回到本页面,哎,那就简单了。
08:11
在这哎直接调用,哎,来到咱们这个print配置好同音量,我们来重新来看一下咱们这个效果。好,我来刷新,刷新呢,我们来到第三页,我来修改员工,我把这个一修改男,我变成女,好这个呢,我们就变成AAA测试部啊,我们来点更新。好,这个更新呢,应该关闭模态框之类的,我们这个模态框没关吗。嗯,我们来看啊,咱们这个模态框哦,我们这个选择器写的有问题。重新。重新来好,我们来点第三页,好,我们重新来难开发部,好,我们改成DBB,我点更新好,关闭模态框,还是回到第三页,第五页,那也一样啊,我们把这个男改成女,改成AAA,开发部测试部最后一条记录我们点更新好,你看最后一条记录变了,还是在第五页,那我们这个修改逻辑我们就做完了。
我来说两句