2011-05-02 44 views
2

嗨,我對servlet環境來說是個新手。在這裏,我想一個形式張貼到我的servlet像這樣的東西:無法讀取servlet中的表單字段

<form action="OnlineExam?q=saveQuestion" method="post" enctype="multipart/form-data"> 
     <fieldset> 
     <legend>Question</legend> 
     <textarea class="questionArea" id="question" name="question">Enter Question.</textarea> 
     <br class="clearFormatting"/> 
     Attach File<input type="file" name="file" /> 

     <input class="optionsInput" value="Option A" name="A" onfocus = "clearValues('A')" onblur = "setValues('A')"/> 
     <br class="clearFormatting"/> 

     <input class="optionsInput" value="Option B" name="B" onfocus = "clearValues('B')" onblur = "setValues('B')"/> 
     <br class="clearFormatting"/> 

     <input class="optionsInput" value="Option C" name="C" onfocus = "clearValues('C')" onblur = "setValues('C')"/> 
     <br class="clearFormatting"/> 

     <input class="optionsInput" value="Option D" name="D" onfocus = "clearValues('D')" onblur = "setValues('D')"/> 
     <br/> 

     <input type="submit" value="Save" /> 
     <input type="reset" value="Cancel" /> 
     <button style="display: none" onclick="return deleteQuestion()" >Delete</button> 
     </fieldset> 
     </form> 

並且servlet是這樣的:

protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 
if(request.getParameter("q").equals("saveQuestion")){   
       saveQuestion(request); 
      } 
} 

protected void doPost(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     doGet(request, response); 
    } 

public void saveQuestion(HttpServletRequest request){ 
       Enumeration enum = request.getParameterNames(); 
       while (enum.hasMoreElements()) { 
        String pName = (String) enum.nextElement(); 
        String[] pValues = request.getParameterValues(pName); 
        System.out.print("<b>"+pName + "</b>: "); 
        for (int i=0;i<pValues.length;i++) { 
         System.out.print(pValues[i]); 
        } 
        out.print("<br>"); 
       } 
} 

但它僅打印q參數不是其他形式領域。

我也試圖讓他們與request.getParameter("question")但這也不起作用。所以我錯了。其實我是從PHP背景,最近開始在java編碼,所以請幫助。

在此先感謝

回答

3

當您使用enctype="multipart/form-data"你不能訪問請求參數與平時一樣[即request.getParameter("question")。您必須使用MultipartRequest對象。

而且你在POST中提交表單,然後在servlet中將它重定向到doGet。爲什麼這樣?爲什麼不直接使用GET作爲表單提交的方法。


演示使用MultipartRequest:

String ph="images\\"; 
MultipartRequest req=new MultipartRequest(request, ph); 
String question=req.getParameter("question"); 
System.out.println("Question: "+question); 
+0

在那裏我正在上傳一個文件,所以我使用後 – codeomnitrix 2011-05-02 13:25:33

+0

嘿,你能解釋一下怎麼做multipartRequest對象 – codeomnitrix 2011-05-02 13:26:31

+0

@codeomnitrix:我已經添加了一個小的演示代碼。 – 2011-05-02 13:30:29

0

爲什麼你的表單動作看起來像用Q = saveQuestion GET請求,而表單類型是POST?這個調用可能會忽略GET參數。

+0

沒有參數不會被忽略。 – 2011-05-02 13:25:00

+0

哦,好的。無論如何只是一個猜測:) – midhunhk 2011-05-02 13:27:17