jsp的request.getParameter获取不到表单参数

可能原因:

1: form表单中的控件没有定义name属性

2: form表单中的控件被设置成disabled

3: form表单的enctype="multipart/form-data"是一种用于上传文件的表单

解决方法:

对于第三种情况我们直接request.getParameter来取参数值是取不到的

我们可以借用apache的上传组件来解决

用到jarcommons-fileupload-1.1.1.jar

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileItemFactory;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

    /**

     *获取各种类型表单的表单参数

     *@paramrequest HttpServletRequest请求对像

     * @paramparamName 参数名

     *@return

     *@throwsFileUploadException

     */

    publicstatic String getParameterValue(HttpServletRequest request,String paramName) throws FileUploadException{

    boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if(isMultipart==true){

        FileItemFactory factory = new DiskFileItemFactory();

        ServletFileUpload upload = new ServletFileUpload(factory);

        List fileItemList = upload.parseRequest(request);

        if(fileItemList!=null){

           for(Iterator itr=fileItemList.iterator();itr.hasNext();){

               FileItem fileItem = (FileItem)itr.next();

               if(fileItem.getFieldName().equalsIgnoreCase(paramName)){

                   return new String(fileItem.getString().getBytes("ISO8859-1"))//中文转码

               }

           }

        }

    }else{

        return new String(request.getParameter(paramName).getBytes("ISO8859-1"))//中文转码

    }

    return"";

    }

posted on 2007-12-14 19:07 JGAO编程随笔 阅读(14858) 评论(6)  编辑  收藏

评论

# re: jsp的request.getParameter获取不到表单参数 2008-05-16 01:35 howardhe

请指教,为什么我在程序中只能调用一次这处方法,其后调用就不能正确返回结果  回复  更多评论   

# re: jsp的request.getParameter获取不到表单参数[未登录] 2008-05-19 23:16 jgao

我测试了下,没发现你说的问题啊,不懂你是怎么调用出现的问题


//Test.java
package com.sf.test;

import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileItemFactory;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class Test {
/**
*
* 获取各种类型表单的表单参数
*
* @paramrequest HttpServletRequest请求对像
*
* @paramparamName 参数名
*
* @return
* @throws UnsupportedEncodingException
*
* @throwsFileUploadException
*
*/

public static String getParameterValue(HttpServletRequest request,
String paramName) throws FileUploadException,
UnsupportedEncodingException {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart == true) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List fileItemList = upload.parseRequest(request);
if (fileItemList != null) {
for (Iterator itr = fileItemList.iterator(); itr.hasNext();) {
FileItem fileItem = (FileItem) itr.next();
if (fileItem.getFieldName().equalsIgnoreCase(paramName)) {
return new String(fileItem.getString().getBytes(
"ISO8859-1"));// 中文转码
}
}
}else{
return "";
}
} else if(request.getParameter(paramName)!=null){
return new String(request.getParameter(paramName).getBytes(
"ISO8859-1"));// 中文转码
}else{
return "";
}
return "";
}

}



TestJsp.jsp
<%@ page contentType="text/html;charset=GB2312"%>
<html>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" >
<form action="TestJspAction.jsp" enctype="multipart/form-data">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<input type="text" id="userName" name="userName">
<input type="submit" value="submit">
</table>
</form>
</body>
</html>



//TestJspAction.jsp
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="com.sf.test.Test"%>
<%
String userName = Test.getParameterValue(request,"userName");
out.print(userName);
%>

  回复  更多评论   

# re: jsp的request.getParameter获取不到表单参数 2008-06-03 20:35 zhoudb

我试了,但是怎么还是获取不了哦,快疯了哦啊!  回复  更多评论   

# re: jsp的request.getParameter获取不到表单参数 2008-09-18 11:50 逸诚

确实用enctype="multipart/form-data"上传文件时表单的参数得不到。  回复  更多评论   

# re: jsp的request.getParameter获取不到表单参数[未登录] 2011-05-14 11:32 ok

@逸诚
肯定阿,你用二进制这种方式,用request肯定得不到,你要用另一种reqeust,具体我记不清了,你查一下  回复  更多评论   

# re: jsp的request.getParameter获取不到表单参数 2011-07-28 16:01 ``

那我在jsp页面中怎么得到表单参数的值  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2011年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜