专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

过滤器结合装饰模式,改变请求参数,去除请求参数前后空格

ins518 2024-09-21 00:48:36 技术文章 15 ℃ 0 评论

改变入参。

今天给大家分享过滤器结合装饰模式改变请求参数,去除请求参数前后空格。这边有一个接口,正常情况下如果前端传参username里面带了空格,可以手动的在这边去除空格,或者通过一些工具类在这边去除空格。这种方式需要每个接口都进行手动的去除空格,会让代码显得很冗余,就可以结合过滤器去做这样的功能。

比如我这边写的去空格的过滤器继承了onceperrequestfilter,实现每次请求过滤器只被执行一次。在这个里面可以拿到request和response对象,它里面肯定就有请求参数,所以在这边自定义了trimrequestwrapper,在这个里面去实现参数去空的功能。这边其实用到的就是装饰者模式。

点进去,拿着代码,首先让它继承于对象,这个对象其实就是Httpserverletrequest。继承它需要重写几个方法,要重写getparameter的方法,这个方法就是获得get请求参数的值。进行了重写,在map里面拿到参数值,然后把它返回了。当然肯定要给map赋值,还重写了这个方法。

它的功能跟这个是类似的,只要不是从请求体里面拿到的参数,都可以通过这样的方法去获得到它的值。在这边还重写了getinputstream方法,这个里面主要是处理POST类型的请求,只有当方法是POST请求并且参数为Json格式的时候,这个方法会被默认的调用。

在这个里面就拿到原生的流,然后转成JSON,在这个方法里面调用工具类去给Json进行空格的操作,然后返回这样的流对象。这个工具类其实也可以简单的看一下,在这边,先把它转成介绍jsonobject对象,所有的key都是入参的参数名,并且进行遍历,拿到key以及对应的value值,object就是value值,所以要对它进行去空格的操作。

·再来看一下装饰者的构造函数,在这个里面先把request传给父类,对于非json请求的参数就进行这样的处理,在这个里面转换成map集合,它的key就是参数名,string数组其实就是参数值。

·在这边先把它放到map里面,然后在这边进行去空操作,可以看一下,去空其实也是遍历每一个key,拿到每一个value,把每一个value值在这边进行去空格,最终再给它放到map里面。

来测试一下这个方法,比如这边是get方法,比如用户名张三,带了一个空格,并且电话这边也带了一个空格,这边可以看到就已经没有任何的空格了。

这个函数我也会放到Java高并发实战课程里面,如果有兴趣,左下角可以了解一下。今天的分享就到这。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表