Servlets-form-data
サーブレット-フォームデータ
ブラウザからWebサーバーに、そして最終的にはバックエンドプログラムに情報を渡す必要がある場合、多くの状況に出くわしたに違いありません。 ブラウザは、2つの方法を使用してこの情報をWebサーバーに渡します。 これらのメソッドは、GETメソッドとPOSTメソッドです。
GETメソッド
GETメソッドは、エンコードされたユーザー情報をページリクエストに追加して送信します。 ページとエンコードされた情報は、次のように*?*(疑問符)記号で区切られています-
GETメソッドは、ブラウザからWebサーバーに情報を渡すデフォルトのメソッドであり、ブラウザのLocation:boxに表示される長い文字列を生成します。 サーバーに渡すパスワードまたはその他の機密情報がある場合は、GETメソッドを使用しないでください。 GETメソッドにはサイズ制限があります。リクエスト文字列には1024文字しか使用できません。
この情報はQUERY_STRINGヘッダーを使用して渡され、QUERY_STRING環境変数を介してアクセスでき、サーブレットは* doGet()*メソッドを使用してこのタイプのリクエストを処理します。
POSTメソッド
一般に、バックエンドプログラムに情報を渡すより信頼性の高い方法は、POSTメソッドです。 これは、GETメソッドとまったく同じ方法で情報をパッケージ化しますが、?の後にテキスト文字列として送信する代わりに (疑問符)をURLに含めて、個別のメッセージとして送信します。 このメッセージは、解析して処理に使用できる標準入力の形式でバックエンドプログラムに送信されます。 サーブレットは* doPost()*メソッドを使用してこのタイプのリクエストを処理します。
サーブレットを使用したフォームデータの読み取り
サーブレットは、状況に応じて次の方法を使用して、フォームデータの解析を自動的に処理します-
- * getParameter()*-request.getParameter()メソッドを呼び出して、フォームパラメーターの値を取得します。
- * getParameterValues()*-パラメーターが複数回表示され、チェックボックスなどの複数の値を返す場合、このメソッドを呼び出します。
- * getParameterNames()*-現在のリクエストのすべてのパラメータの完全なリストが必要な場合は、このメソッドを呼び出します。
URLを使用したGETメソッドの例
これは、GETメソッドを使用して2つの値をHelloFormプログラムに渡す簡単なURLです。
Webブラウザからの入力を処理する HelloForm.java サーブレットプログラムを以下に示します。 渡された情報へのアクセスを非常に簡単にする* getParameter()*メソッドを使用します-
環境が適切に設定されていると仮定して、HelloForm.javaを次のようにコンパイルします-
すべてがうまくいけば、上記のコンパイルは HelloForm.class ファイルを生成します。 次に、このクラスファイルを<Tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classesにコピーし、<Tomcat-installation-directory>/webapps/ROOT/にある web.xml ファイルに次のエントリを作成する必要があります。 WEB-INF/
ブラウザのLocation:boxに_http://localhost:8080/HelloForm?first_name = ZARA&last_name = ALI_と入力し、ブラウザで上記のコマンドを実行する前に、Tomcatサーバーがすでに起動していることを確認します。 これは、次の結果を生成します-
- 名:ZARA
- 姓:ALI
フォームを使用したGETメソッドの例
次に、HTML FORMと送信ボタンを使用して2つの値を渡す簡単な例を示します。 同じサーブレットHelloFormを使用して、この入力を処理します。
このHTMLをHelloファイルに保存し、<Tomcat-installationdirectory>/webapps/ROOTディレクトリに配置します。 _http://localhost:8080/Hello_にアクセスすると、上記のフォームの実際の出力は次のようになります。
名前苗字:
名と姓を入力してから、送信ボタンをクリックして、Tomcatが実行されているローカルマシンで結果を確認してください。 提供された入力に基づいて、上記の例で述べたのと同様の結果が生成されます。
フォームを使用したPOSTメソッドの例
上記のサーブレットを少し変更して、GETメソッドとPOSTメソッドを処理できるようにします。 以下は、GETまたはPOSTメソッドを使用してWebブラウザから与えられた入力を処理する HelloForm.java サーブレットプログラムです。
次に、上記のサーブレットをコンパイルしてデプロイし、次のようにPOSTメソッドでHelloを使用してテストします-
上記のフォームの実際の出力は次のとおりです。姓と名を入力して[送信]ボタンをクリックし、Tomcatが実行されているローカルマシンで結果を確認します。
名前苗字:
提供された入力に基づいて、上記の例で述べたのと同様の結果が生成されます。
チェックボックスデータをサーブレットプログラムに渡す
チェックボックスは、複数のオプションを選択する必要がある場合に使用されます。
これは、2つのチェックボックスを持つフォームのサンプルHTMLコードCheckBoxです。
このコードの結果は次の形式です
数学物理化学
以下に示すのは、Webブラウザからチェックボックスボタンに指定された入力を処理するCheckBox.javaサーブレットプログラムです。
上記の例では、次の結果が表示されます-
- 数学フラグ::オン
- 物理フラグ::null
- 化学フラグ::オン
すべてのフォームパラメーターの読み取り
以下は、HttpServletRequestの* getParameterNames()*メソッドを使用して、使用可能なすべてのフォームパラメーターを読み取る一般的な例です。 このメソッドは、指定されていない順序でパラメーター名を含む列挙を返します
列挙ができたら、_hasMoreElements()_メソッドを使用して停止するタイミングを決定し、_nextElement()_メソッドを使用して各パラメーター名を取得することにより、標準的な方法で列挙をループできます。
さて、次の形式で上記のサーブレットを試してください-
今、上記のフォームを使用してサーブレットを呼び出すと、次の結果が生成されます-
Param Name | Param Value(s) |
---|---|
maths | on |
chemistry | on |
上記のサーブレットを試して、テキストボックス、ラジオボタン、ドロップダウンボックスなどの他のオブジェクトを持つ他のフォームのデータを読み取ることができます。