TOPサーバ構築・運用> ヘッダ情報による制御
はじめてのサーバサイドJava
はじめてのサーバサイドJava

第7回:リクエストデータの利用(後編)

著者:山田 祥寛   2006/4/28
前のページ  1  2  3
ヘッダ情報による制御

   次に、ヘッダ情報を利用して、クライアントの対応言語(Accept-Languageヘッダ)に応じて、異なる「こんにちは」を表示するheader.jsp(リスト3)を作成してみましょう(図3、注4)。
リスト3:header.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<title>ヘッダ情報による言語の変更</title>
</head>
<body>
<c:choose>
   <c:when test="${fn:startsWith(header['Accept-Language'],'ja')}">
      こんにちは!</c:when>
   <c:when test="${fn:startsWith(header['Accept-Language'],'de')}">
      Guten Tag!</c:when>
   <c:when test="${fn:startsWith(header['Accept-Language'],'fr')}">
      Bonjour!</c:when>
   <c:otherwise>
      Hello!</c:otherwise>
</c:choose>
</body>
</html>

対応言語に応じて異なる言語のあいさつを表示
図3:対応言語に応じて異なる言語のあいさつを表示
(画像をクリックすると別ウィンドウに拡大図を表示します)

※注4:
クライアントの対応言語は、ブラウザの設定で変更可能です。例えば、Internet Explorer 6.0ならインターネットオプションの[全般]タブ−[言語...]で変更できます。

   ヘッダ情報を管理するのは、暗黙オブジェクトheaderの役割です。${header['ヘッダ名']}で指定されたヘッダ情報を取得します。例えば、Accept-Languageヘッダであれば、「fr-ca,ja;q=0.5」のような文字列を返すはずです。

   <c:choose>要素は、<c:when>要素のtest属性に示された条件式がtrueである場合に、該当するブロック(複数のブロックに合致した場合には、最初に合致したブロック)を、すべての条件式がfalseであった場合には<c:otherwise>要素の内容を、それぞれ出力します。fn:startsWith関数については、表3を参照してください。

   つまり、ここでは、Accept-Languageヘッダが"ja"(日本語)、"de"(ドイツ語)、"fr"(フランス語)ではじまる場合に、それぞれ対応する言語で「こんにちは」を表示するわけです。Accept-Languageヘッダが指定されたいずれでもない場合は、英語で「Hello!」と表示します。

前のページ  1  2  3


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

INDEX
第7回:リクエストデータの利用(後編)
  リクエストデータの利用
  入力文字コードの宣言は必須
ヘッダ情報による制御