问题
前端application/x-www-form-urlencoded后台java使用HttpServletRequest.getParameter获取为空。
解决流程:
application/x-www-form-urlencoded这种编码格式使得java后台只能使用HttpServletRequest.getParameter方法接收参数。
1.确认前端请求编码格式是否为application/x-www-form-urlencoded
2.确认后端java使用的是HttpServletRequest.getParameter方式
3.确认使用HttpServletRequest.getParameter方法前没有使用HttpServletRequest.getInputStream或者getReader(因为流中的数据只能读取一次)
4.确认传输数据大小限制,tomcat可设置数据接收大小。使用配置修改
server.tomcat.max-http-post-size=4194304 或者tomcat server.xml配置文件修改(4M)
扩展
前端数据传编码格式有四种:
1.application/x-www-form-urlencoded,数据格式为key1=val1&key2=val2,GET请求会拼接在URL后,POST请求会放在请求体(FORM-DATA)中。后端使用HttpServletRequest.getParameter方法接收参数。GET请求一般会出现乱码,是因为浏览器字符集和服务器字符集的问题。浏览器一般使用iso-8859-1对url进行编码,后端一般使用utf-8编码
2.multipart/form-data,主要用于上传文件,前端必须设置为此边贸格式。后端使用HttpServletRequest.getInputStream接收。
3.application/json,以json的格式将数据放在请求体传输,后端使用HttpServletRequest.getInputStream或HttpServletRequest.getReader都可以。
4.text/xml,文本格式或xml格式,现在呗json格式替代。