私の問題は、.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
も参照してくださいhttp://stackoverflow.com/questions/2422468/how-to-upload-files-in-jsp-servlet/2424824#2424824 – BalusC