TOPサーバ構築・運用> リクエストデータを利用しよう




はじめてのサーバサイドJava
はじめてのサーバサイド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  次のページ

書籍紹介
まるごとサーバサイドJava! Vol.1
まるごとサーバサイドJava! Vol.1 〜初心者からプロまですべての開発者に贈る〜サーバサイドJavaのすべてをまるごと紹介
サーバサイドで実行されるシステム環境Java EEを取り巻く環境は一大変革を遂げようとしています。J2EE時代のEJB(Enterprise Java Beans)からPOJO(Plain Old Java Object)へ、オブジェクト指向からアスペクト指向へ。Sun Microsystems外から発生した新しい流れは本家Java EE 5へ取り入れられる予定です。本書はこうしたJavaの新潮流を余すことなくお伝えします。

発売日:2006/09/01
定価:\2,415(本体 \2,300+税)
WINGSプロジェクト  山田 祥寛
著者プロフィール
有限会社WINGSプロジェクト   山田 祥寛
Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト(http://www.wings.msn.to/)」の代表。主な著書に「10日でおぼえる入門教室シリーズ(Jakarta・JSP/サーブレット・PHP・XML)」(以上、翔泳社)、「書き込み式 SQLのドリル」(ソシム)など。最近ではIT関連技術の取材、講演まで広くを手がける毎日。

この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第6回:リクエストデータの利用(前編)
リクエストデータを利用しよう
  JSPでリクエストデータを取得する
はじめてのサーバサイドJava
第1回 Are you ready for Server Java ?
第2回 JSP&サーブレットの基本環境設定(前編)
第3回 JSP&サーブレットの基本環境設定(後編)
第4回 Windows/Linux共通の基本環境の設定
第5回 JSP&サーブレット〜JSP基本編〜
第6回 リクエストデータの利用(前編)
第7回 リクエストデータの利用(後編)
第8回 Cookieとセッション情報
第9回 データベースとの連携(前編)
第10回 データベースとの連携(後編)
第11回 デプロイメントディスクリプタ活用術(前編)
第12回 デプロイメントディスクリプタ活用術(後編)