javaweb项目中--jsp表单通过post提交-后台取不到数据但get方式可以

 在测试增加与修改的提交时遇到的错误:报空指针异常,查看时发现页面数据正常,提交到后台数据就不见了,但提交方式改为get 时后台就能取到表单数据(虽然中文为乱码)。

 Controller类:

 

jsp页面:

 

感谢群里大神的帮助,解决了问题。

出错的原因是jsp页面中添加了enctype="multipart/form-data"  删掉 或 enctype="application/x-www-form-urlencoded"

 

enctype="multipart/form-data"是设置MIME编码,上传二进制数据(提交时会将表单中将要提交的数据转换为二进制后提交--可用以文件上传

enctype属性值默认为:application/x-www-form-urlencoded,--后台可通过request获取到前台表单中的数据 , 不能用于文件上传(向服务器提交数据时--空格转换为“+”号,特殊符号转换为ASCII HEX值)

 

为什么method="post" 时出现问题,而method="get" 方式时后台可以取到值:

因为提交方式为get 时,enctype属性会强制使用application/x-www-form-urlencoded

所以我的后台获取不到以post形式提交的表单数据报空指针异常,get方式提交时却可以取到值。(取到值为乱码--编码问题,设置数据传递时的编码方式)

如果表单需要同时上传文件与input的value时:

1:SmartUpload su = new SmartUpload();//新建一个SmartUpload对象

su.getRequest().getParameterValues();//取数组值
su.getRequest().getParameter( );//取单个参数单个值

2://在spring配置文件中配置(需要引入commons-fileupload-1.2.1.jar和commons-io-2.5.jar)

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>

 

posted @ 2018-04-03 18:25  朴小萌  阅读(1219)  评论(0)    收藏  举报