jsp的request.getParameter獲取不到表單參數(shù)

          可能原因:

          1: form表單中的控件沒有定義name屬性

          2: form表單中的控件被設(shè)置成disabled

          3: form表單的enctype="multipart/form-data"是一種用于上傳文件的表單

          解決方法:

          對于第三種情況我們直接request.getParameter來取參數(shù)值是取不到的

          我們可以借用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;

              /**

               *獲取各種類型表單的表單參數(shù)

               *@paramrequest HttpServletRequest請求對像

               * @paramparamName 參數(shù)名

               *@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"))//中文轉(zhuǎn)碼

                         }

                     }

                  }

              }else{

                  return new String(request.getParameter(paramName).getBytes("ISO8859-1"))//中文轉(zhuǎn)碼

              }

              return"";

              }

          posted on 2007-12-14 19:07 JGAO編程隨筆 閱讀(14913) 評論(6)  編輯  收藏

          評論

          # re: jsp的request.getParameter獲取不到表單參數(shù) 2008-05-16 01:35 howardhe

          請指教,為什么我在程序中只能調(diào)用一次這處方法,其后調(diào)用就不能正確返回結(jié)果  回復(fù)  更多評論   

          # re: jsp的request.getParameter獲取不到表單參數(shù)[未登錄] 2008-05-19 23:16 jgao

          我測試了下,沒發(fā)現(xiàn)你說的問題啊,不懂你是怎么調(diào)用出現(xiàn)的問題


          //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 {
          /**
          *
          * 獲取各種類型表單的表單參數(shù)
          *
          * @paramrequest HttpServletRequest請求對像
          *
          * @paramparamName 參數(shù)名
          *
          * @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"));// 中文轉(zhuǎn)碼
          }
          }
          }else{
          return "";
          }
          } else if(request.getParameter(paramName)!=null){
          return new String(request.getParameter(paramName).getBytes(
          "ISO8859-1"));// 中文轉(zhuǎn)碼
          }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);
          %>

            回復(fù)  更多評論   

          # re: jsp的request.getParameter獲取不到表單參數(shù) 2008-06-03 20:35 zhoudb

          我試了,但是怎么還是獲取不了哦,快瘋了哦啊!  回復(fù)  更多評論   

          # re: jsp的request.getParameter獲取不到表單參數(shù) 2008-09-18 11:50 逸誠

          確實(shí)用enctype="multipart/form-data"上傳文件時表單的參數(shù)得不到。  回復(fù)  更多評論   

          # re: jsp的request.getParameter獲取不到表單參數(shù)[未登錄] 2011-05-14 11:32 ok

          @逸誠
          肯定阿,你用二進(jìn)制這種方式,用request肯定得不到,你要用另一種reqeust,具體我記不清了,你查一下  回復(fù)  更多評論   

          # re: jsp的request.getParameter獲取不到表單參數(shù) 2011-07-28 16:01 ``

          那我在jsp頁面中怎么得到表單參數(shù)的值  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2007年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 晴隆县| 长汀县| 曲阜市| 武威市| 时尚| 电白县| 宝兴县| 东阳市| 宁夏| 三明市| 时尚| 诸暨市| 襄城县| 盈江县| 英吉沙县| 玛曲县| 汤原县| 延吉市| 吉水县| 宝应县| 济宁市| 瓦房店市| 黎城县| 台东市| 化州市| 长泰县| 宝山区| 霍州市| 昂仁县| 马鞍山市| 河曲县| 永州市| 弋阳县| 禄丰县| 营口市| 高密市| 康马县| 会宁县| 辉南县| 武宁县| 利川市|