TOP
>
サーバ構築・運用
> リクエストデータを利用しよう
はじめてのサーバサイドJava
第6回:リクエストデータの利用(前編)
著者:
山田 祥寛
2006/4/26
1
2
次のページ
リクエストデータを利用しよう
基本的なJSPページの構文を理解したところで、次はもう少し「JSPらしい」アプリケーションを作成してみましょう。前回で紹介したコードは、JSPを利用しているとはいっても、あらかじめ決められた文字列を表示しているだけでした。そのため、HTMLとの違いがわかりづらかったかもしれません。
第1回でも述べたとおり、JSP&サーブレットの最大の魅力は、クライアントとサーバが対話的に情報を交換できるという点にあります。
そこで今回は、JSPページでクライアントからの入力(リクエストデータ)を受け取る方法について説明します。リクエストデータについて学ぶことで、より緊密な対話性を持つアプリケーションを構築できるようになります。
リクエストデータの種類
具体的なコードを見る前に、まずリクエストデータにはどのようなものがあるのかを確認しておくことにしましょう。リクエストデータは、大きく次の3種類に分類できます。
1. フォーム情報
Post形式のHTMLフォームから渡されるデータのことです。
テキストボックスやラジオボタン、プルダウンメニューなど、おなじみのフォーム要素で入力された情報は、送信ボタンをクリックすることでサーバに送信されます。
2. クエリ情報
URLの末尾に「? 名前= 値&...」の形式で付加される情報です。
クエリ情報には以下のような制限がありますが、データベースへの問い合わせに際して、キーとなるような短いデータを手軽に送信できるというメリットがあります。
送信可能な文字数に制限がある(注1)
ブラウザのアドレス欄に送信データが露出する
「%」や「?」のような予約文字を使用できない
表1:クエリ情報の制限
※注1:
文字数の最大値は、使用しているサーバ環境によって異なりますが、せいぜい数百バイト程度に留めておくのが無難です。
URLに直接クエリ文字列を指定する以外に、<form>タグでGETオプションを指定した場合も、フォームに入力されたデータはすべてクエリ情報としてサーバに送信されます。
3. ヘッダ情報
クライアントからサーバに送信される情報は、目に見える情報ばかりではありません。例えば、クライアントが使用しているブラウザや対応する言語、リンク元のページ、様々な情報が内部的に生成されてサーバに送信されています。このような不可視の情報のことを「ヘッダ情報」(リクエスト・ヘッダ)といいます(図1、注2)。
図1:ヘッダ情報
※注2:
サーバからクライアントに送信されるヘッダ情報のことを「レスポンス・ヘッダ」といいます。
フォーム情報やクエリ情報とは異なり、ヘッダ情報は具体的なデータのやり取りが見えないため(注3)、初学者にとってはわかりづらい概念かもしれません。
※注3:
ヘッダ情報を視覚的に表示したい場合、ieHTTPHeaders
(
http://www.blunck.info/iehttpheaders.html
)などのツールが役立ちます。
しかし、ヘッダ情報はアイデア次第で様々な局面に活用可能です。
例えば、クライアントが使用しているブラウザの種類を表すヘッダであるUser-Agentヘッダを利用することで、ブラウザ依存のコンテンツ(JavaScriptやCSSのコードなど)を動的に切り替えることができます。また、リンク元を表すRefererヘッダの値を記録することで、自分のサイトにどんなページがリンクしているのかを把握するのに役立ちます。
はたまた、ユーザの対応言語を表すAccept-Languageヘッダを利用すれば、クライアント環境に応じて表示言語を切り替えるような機能も簡単に構築できるでしょう。これらはヘッダ情報活用のほんの一例にすぎませんが、ヘッダ情報の有用性がお分かりいただけるのではないかと思います(注4)。
※注4:
ヘッダ情報については、Studying HTTP(
http://www.studyinghttp.net/
)というサイトが参考になります。
1
2
次のページ
著者プロフィール
有限会社WINGSプロジェクト 山田 祥寛
Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト(
http://www.wings.msn.to/
)」の代表。主な著書に「10日でおぼえる入門教室シリーズ(Jakarta・JSP/サーブレット・PHP・XML)」(以上、翔泳社)、「書き込み式 SQLのドリル」(ソシム)など。最近ではIT関連技術の取材、講演まで広くを手がける毎日。
INDEX
第6回:リクエストデータの利用(前編)
リクエストデータを利用しよう
JSPでリクエストデータを取得する