2011-02-05 4 views
0

私の問題は、.htmlページにFormがあり、CodeSubmissionという名前のサーブレットをアクティブにします。 最初は3.0 APIを使用して実装しましたが(のみ)、サーブレットがアクティブになったときはいつでも、パラメータなしでリクエストが送信されました。 私はそれを試して、新しいプロジェクトで(サーブレットをweb.xmlファイルに手動で追加することで)2.5 APIを使用することにしましたが、サーブレットが呼び出されるたびに、パラメータなしでリクエストが来ました。.htmlからのリクエストの空のパラメータリストは、multipart/form-dataフォームをサーブレット2.5または3.0にポストします

ファイルのアップロードフィールドのためだと思っていましたが、削除した後でも選択フィールドがリクエストパラメータとして表示されません。ここで

は、HTML形式のコードです:

<form action="CodeSubmission" method="POST" enctype="multipart/form-data"> 
<label for="compiler">Compilador:</label> 
<select id="compiler"> 
    <option value="c">C</option> 
    <option value="c++">C++</option> 
    <option value="scala7">Scala 2.7.7</option> 
    <option value="scala8">Scala 2.8.1</option> 
    <option value="java5">Java 1.5</option> 
    <option value="java6">Java 1.6</option> 
</select> 
<br /> 
<label for="code">Arquivo:</label> 
<input id="code" type="file" size=80 /> 
<br /> 
<input type="submit" value="Enviar" /> 
</form> 

そして、ここでパラメータをチェックするテストコードです:()列挙は0 ここではいつものサイズを持っている

System.out.println("Length: "+request.getContentLength()); 
    System.out.println("Content Type: "+request.getContentType()); 
    System.out.println("Method: "+request.getMethod()); 
    Enumeration<String> attributeNames = request.getAttributeNames(); 
    System.out.println("Request Attributes"); 
    while (attributeNames.hasMoreElements()) { 
     String name = attributeNames.nextElement(); 
     System.out.println(name + ": " + request.getAttribute(name)); 
    } 
    Enumeration<String> paramNames = request.getParameterNames(); 
    System.out.println("Request Parameters"); 
    while (paramNames.hasMoreElements()) { 
     String name = paramNames.nextElement(); 
     System.out.println(name + ": " + request.getParameter(name)); 
    } 

request.getParameterNamesをファイルをロードしてオプションを選択した後、「Enviar」ボタンをクリックしたときにコンソールに表示される内容です。

Length: 44 
Content Type: multipart/form-data; boundary=----WebKitFormBoundary4E3NYbsqXZZMWwcl 
Method: POST 
Request Attributes 
Request Parameters 
+0

も参照してくださいhttp://stackoverflow.com/questions/2422468/how-to-upload-files-in-jsp-servlet/2424824#2424824 – BalusC

答えて

1

multipart/form-dataは、パラメータのための異なるコード体系を持っています。 servelt 2.5では、commons-fileuploadを使うべきです。サーブレット3.0を使用してもそれを使用することも、request.getPart(..)を使用することもできます。サーブレットに注釈を付ける必要があります@MultiPartConfig

関連する問題