基礎から学ぶサーブレット/JSP(6)
JSPの基本「暗黙オブジェクト」をさらに極める
山田祥寛
2003/6/20
| クライアントへの応答を制御する −responseオブジェクト− |
outオブジェクトがコンテンツ本体の出力を制御する役割を担っていたのに対し、responseオブジェクトはむしろコンテンツ本体に付随するヘッダ情報やステータスを制御する際に用います。
一見、outもresponseも「クライアントへの出力手段を制御するための手段」を提供するオブジェクトですので区別がつきにくいかもしれませんが、ざっくりと区分するならば、前者は可視的な情報を、後者は不可視の情報を制御するものであると思っていただければよいでしょう。
■ヘッダ情報の発行
先のrequest_header.jspでは、クライアントから送信された一連のヘッダ情報を取得してみました。ここでは、サーバ側での処理結果にカスタムのヘッダ情報を付加することで、クライアント側をコントロールしてみることにします。
以下サンプルは、クライアント側の「キャッシュ」を無効化するためのものです。クライアント側ではパフォーマンスを向上させるために、一度読み込んだページをキャッシュと呼ばれる領域に保存し、2度目以降のアクセスで使用するというようなことが行われます。が、時として、そのキャッシュが邪魔をして最新の状態が表示されないというケースが起こり得ます。そこで、データの変動が激しいページにおいては、クライアント側のキャッシュを無効にすることで、そうしたデータの不整合を未然に防ぎます。
| response_header.jsp |
<%@ page contentType="text/html;charset=Shift_JIS"
import="java.util.*" %> |
Last-Modifiedヘッダ(コンテンツの最終更新日)には常に今日の日付(Calendarクラスの初期値)を、Expiresヘッダ(有効期限)には「1970/01/01」(過去日)をセットすることで、クライアントに対して常に新しいコンテンツを読み込ませることができます。
pragma、Cache-ControlヘッダはそれぞれHTTP 1.0/1.1仕様のキャッシュ制御用ヘッダです。両ヘッダには「no-cache(キャッシュ無効)」をセットすることで、キャッシュを無効化することが可能です。
クライアントやネットワークの経由に設置されたキャッシュサーバなど、さまざまなキャッシュの仕組みがありますので、これらをすべて無効化するためには、これだけの制御ヘッダを送信しなければならないわけです。
なお、以下にリクエスト/レスポンスに際して主に使用されるヘッダをいくつか挙げておきます。
表3 HTTPで使用される主なヘッダ
|
■クッキーの発行
以下のサンプルは、先のrequest_cookie.jspで使用します。request_cookie.jspから送信されたフォーム情報をクッキーに保存し、再びrequest_cookie.jspにリダイレクトします。
クッキーに関する詳細は、requestオブジェクトの項を参照してください。
| response_cookie.jsp |
<%@ page contentType="text/html;charset=Shift_JIS"
%> |
クッキーデータを表し、制御する一連のメソッドを提供するのは、Cookieクラスの役割です。クッキーは、以下の構文で生成することができます。
Cookie 変数=new Cookie(クッキー名,クッキー値); |
Cookieクラスの主要なメソッドは以下のとおりです。クッキー名だけは最初に設定した値を変更できない点に注意してください。
表4 Cookieクラスの主要なメソッド
|
生成されたクッキーを実際にクライアントに出力するのは、addCookieメソッドの役割です。addCookieメソッドを介して初めて、生成されたクッキーは有効になります。ちなみに、クッキーの有効期限が0の場合、クッキーはブラウザ終了時に削除されます。負数の場合、指定された既存のクッキーは削除されます。
クッキーをクライアントに送信した後、sendRedirectメソッドは指定されたURLにページをリダイレクトします。
■responseオブジェクトのそのほかのメソッド
以下に、ここまで紹介したaddCookie、setHeaderメソッドなどのほか、responseオブジェクトに用意されている主なメソッドを挙げておきます。
表5 responseオブジェクトの主なメソッド
|
| responseオブジェクトは、クライアント出力時のヘッダ情報やHTTPステータス、クッキーなどを制御する際に用います。 |
| 2/3 |
|
INDEX |
||
| 第6回 JSPの基本「暗黙オブジェクト」をさらに極める | ||
| Page1 アプリケーション共通のデータをつかさどる −applicationオブジェクト− |
||
|
Page2 |
||
| Page3 カスタムエラーページを作成する −exceptionオブジェクト− ページ固有の初期化パラメータを管理する −configオブジェクト− |
||
| 「基礎から学ぶサーブレット/JSP」連載記事一覧 |
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
