1、问题场景
前端axios发送get请求,携带参数:
- gwmc: 字符串,岗位名称
- 改字段内容最开始由前端表格导入,存入数据库,在查询数据库获取
- 表格导入,内容可能会换行
查询数据库内容,后端为Java web项目,所用框架
- springboot
- mybatis
- oracle
2、具体问题
: gwmc查询参数为待换行的字符串,后端request接收之后,在获取,换行不见了变为一个空格。
- 后端request.getParameter(“gwmc”),得到的参数是:基层班站 副站长,回车换行变为一个空格
然后查询的时候当然不会匹配上,导致查询不出数据。
3、解决方案
3.1、HttpServletRequest request 方式接收参数改为对象或者变量接收
当参数个数少于比较少,可以直接使用变量接收;当参数个数比较多的时候,建议封装对象,用对象接收参数。
此时接收的字符串原样保留回车换行,查询正常。
3.2、编码解码
这种方式就是在前端发送异步请求之前,对改字段编码,比如url编码,然后,后端接收之后以同样的方式解码;
对比:
- 优点不论内容如何,都能原样恢复
- 缺点:多执行了编码和解码,过程变复杂和开销变大
思考:
- HttpServletRequest request 底层是怎么样接收参数,request.getParameter(“gwmc”)又是怎么样解析参数的呢?
- 变量或者对象接收参数,底层有是怎么实现的呢?
因为目前对框架底层没啥研究,暂时不了解底层原理,有兴趣的小伙伴,可自行查询相关文档,等后续深入学习框架底层的时候,在研究。