2つのHTMLフォームがあります。1つにはHiddenFieldタグがあり、もう1つにはタグがありません。非表示フィールドタグを持つ最初のHTMLフォームを検証する場合、フィールド名とその値を取得することでサーブレットで検証できます。以下に示す例、
隠しタグ付きのHTMLフォーム
<form action="/myServlet" method="post" enctype="multipart/form-data">
<input type="hidden" name="myname" value="myvalue"/>
<input type="file" name="file"/>
<input type="submit" value="Submit"/>
隠しフィールドを検証するサーブレット
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter;
iter = upload.getItemIterator(request);
while (iter.hasNext()) {
item = iter.next();
String fileName = item.getName();
String fieldName = item.getFieldName();
if (item.isFormField()) {
String fieldValue = Streams.asString(item.openStream());
if (fieldName.equals("myname")){ //validating Hidden form tag name
// some process goes here
}
}
上記のコードを使用すると、非表示フォームフィールドを検証できますが、非表示タグがない以下のHTMLフォームがある場合は、検証のためにサーブレットを処理する方法を説明します。
隠しタグのないHTMLフォーム
<form action="/myServlet" method="post" enctype="multipart/form-data">
//No hidden tag
<input type="file" name="file"/>
<input type="submit" value="Submit"/>
これらのさまざまなケースを検証できるようにしたいと思います。
- 非表示のフィールドを含むフォーム、およびフィールドのリクエストの一部のコンテンツ:有効
- 空の非表示フィールドを持つフォーム:無効
- 非表示フィールドのないフォーム:有効
主な問題は、最後の2つのケースを区別することです。