首页 > Web开发 > 详细

后台request接收ajax传输的参数

时间:2019-11-07 15:38:39      阅读:338      评论:0      收藏:0      [点我收藏+]

问题:

        今天小明在生产中碰到了一个问题让他百思不得其解.

  具体操作如下:小明照常在公司划水,结果一大领导说你功能有问题.轮播图后台配置的跳转链接点击跳转不了..然后小明心里就慌得一比,赶紧查找问题的根源所在.

  众所周知大家查找问题通常是从日志中查找,但是大领导催的急,于是乎 小明直接从数据库入手查看一下大领导配置的那条数据,一看吓了小明一跳,数据已经保存上了,但是有一个字段没有保存.这让小明不得其解.

  然后小明就对这种问题一通查找.

  技术分享图片

    最终确定问题所在是,保存的参数因为长度过长其中里面还有多种的不规范字符.再进行保存的时候被后台的数据校验过滤器给校验住

    然后这个字段的数据被当成了sql脚本注入信息处理了,是保存不上的.然后被啪啪的打脸.

技术分享图片

解决:

       问题终于找到了,那就加把劲来解决吧!!解决方案跟经理聊了下.最终经理坚定不让修改后台代码,让我在jsp中进行修改..定下方案后心中有一万头草拟吗路过.

技术分享图片

 

         最终还得找程序员的"百度爸爸"帮忙,于是乎网上个种少操作.

         这些少操作被小明还一一实现了,最终结果是全军覆没.

         例如:ajax中的传入参数全部修改为json进行传输,但是新的问题又来了,这个json也会被这filter校验住.

         还有什么讲ajax中提交添加fromdata什么的,也同样不好使..

         最终没办法了于是乎小明去看有关于ajax中类型的定义跟后台request接收方法的对应

        总结:request方法

        request中获取请求中的参数的方法,

        获取所有参数key

        request.getParameterNames(); get和post都可用

        获取参数value

        request.getParameter("test"); get和post都可用

        获取请求参数集合

        request.getParameterMap(); get和post都可用:

       上述的这几种方法都不适用ajax中 contentType为multipart/form-data

        这也就是小明所困扰的:明明在ajax中已经传递的参数,但是为什么后台接受不到的问题,是因为公司系统的规则:jsp中的数据都是文件形式和二进制流的方式进行传输到后台.所以ajax中contentypt属性必须设置为multipart/form-data.

       知道这个就好修改了..

      然后就是查询request的API找到了在ajax中contentype为multipart/form-data类型的请求包体都需要通过流的的方式进行读取

       获取文本流

       request.getInputStream() 适用于如:application/json,xml,multipart/form-data文本流或者大文件形式提交的请求

       于是乎小明就在后台写了一个最基础的读取流信息,然后将参数进行保存到后台,,

       然后运行测试一遍通过,,完美的跟大领导交差了..

       小明心里想又可以快乐的混日子了.....

    技术分享图片

 

后台request接收ajax传输的参数

原文:https://www.cnblogs.com/yuliuhappaycoding/p/11806789.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!