当前位置: 代码迷 >> Java Web开发 >> Jsp提交form用post步骤doPost.getParameter ()获取不到内容,用get方法就可以,求解
  详细解决方案

Jsp提交form用post步骤doPost.getParameter ()获取不到内容,用get方法就可以,求解

热度:561   发布时间:2016-04-13 22:24:59.0
Jsp提交form用post方法doPost.getParameter ()获取不到内容,用get方法就可以,求解
jsp代码:
<form action="updateNewsServlet" method="post" enctype="multipart/form-data" name="newsDetailForm"  size=100>

servlet:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletExceptionIOException {
resp.setContentType("text/html;charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
req.setCharacterEncoding("UTF-8");
int nid = Integer.parseInt(req.getParameter ( "nid" ));
System.out.println("nid = "+ nid);
}
输出的是 nid = null 在线求解

------解决思路----------------------
1、一种可能是:你检查一下看你那块是不是存在js里面提交action的问题。
2、另一种是在使用表单传送数据的时候,如果form 加了enctype="multipart/form-data" 这个属性,那么表单请求传到另一个jsp或servlet 里时
是不能用request.getParameter()来获取到各个表单元素的值的。
要获取可以这样子:
mySmartUpload.initialize(config,request,response);
filename=mySmartUpload.getRequest().getParameter("sourcefile");

------解决思路----------------------
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的:
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
su.getRequest().getParameterValues();取数组值
su.getRequest().getParameter( );取单个参数单个值
  相关解决方案