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

本文主要解决form表单属性enctype值为multipart/form-data时request.getParameter()取值为空的问题

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

Code:
  1. <form id="form" action="login" method="post" enctype="multipart/form-data">  

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

Code:
  1. <form id="form1" action="login" method="post" enctype="multipart/form-data">  
  2.     post**multipart/form-data<br/>  
  3.     name:<input type="text" name="name"/><br/>  
  4.     <input type="submit" value="Submit"/>  
  5. </form>  
  6. <form id="form2" action="login" method="get" enctype="multipart/form-data">  
  7.     get***multipart/form-data<br/>  
  8.     name:<input type="text" name="name"/><br/>  
  9.     <input type="submit" value="Submit"/>  
  10. </form>  
  11. <form id="form3" action="login" method="post">  
  12.     post<br/>  
  13.     name:<input type="text" name="name"/><br/>  
  14.     <input type="submit" value="Submit"/>  
  15. </form>  
  16. <form id="form4" action="login" method="get">  
  17.     get<br/>  
  18.     name:<input type="text" name="name"/><br/>  
  19.     <input type="submit" value="Submit"/>  
  20. </form>  

分别提交四个表单,结果是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空格转换为 "+" 加号,但不对特殊字符编码。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值