request.getParameter()取值为空的问题

本文探讨了在form表单中使用enctype属性为multipart/form-data时,导致request.getParameter()方法返回null值的问题。通过对比不同enctype设置下的表单提交情况,揭示了此属性对数据编码方式的影响。

本文主要解决form表单属性enctype值为multipart/form-data时request.getParameter()取值为空的问题
刚修改一个静态页面,在Servlet里面用request.getParameter()方法获取页面参数时无论如何都只是获得null值。可是,新建一个简单的带form的jsp页面测试却可以正常获得页面参数。我是郁闷啊!向人求救,被告知是没有添加method="post"的原因。可这解决方法却并不灵验!于是又逐行删除原代码来查找问题根源,最后我发现form标记跟测试中的不太一样,如下:
Code:

而测试程序中的form标记中却没有enctype标记。于是这行代码引起我的重视,遂写了下面的测试:
Code:

  1.  post**multipart/form-data<br/>  
    
  2.  name:<input type="text" name="name"/><br/>  
    
  3.  <input type="submit" value="Submit"/>  
    
  4.  get***multipart/form-data<br/>  
    
  5.  name:<input type="text" name="name"/><br/>  
    
  6.  <input type="submit" value="Submit"/>  
    
  7. post<br/>  
    
  8. name:<input type="text" name="name"/><br/>  
    
  9. <input type="submit" value="Submit"/>  
    
  10. get<br/>  
    
  11. name:<input type="text" name="name"/><br/>  
    
  12. <input type="submit" value="Submit"/>  
    

分别提交四个表单,结果是form1表单提交是获取的值为null,而form2,form3,form4表单提交后获取的值正常。看来还是应该多注意这个enctype属性啊!
在w3school网站上又找到如下信息:

定义和用法
enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。
默认地,表单数据会编码为 “application/x-www-form-urlencoded”。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值)。

属性值
值 描述
application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data 不对字符编码。
在使用包含文件上传控件的表单时,必须使用该值。
text/plain

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值