TOPサーバ構築・運用> JSPでリクエストデータを取得する
はじめてのサーバサイドJava
はじめてのサーバサイドJava

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

著者:山田 祥寛   2006/4/26
前のページ  1  2
JSPでリクエストデータを取得する

   リクエストデータについての概要を理解したところで、具体的にJSPページからリクエストデータを取得する方法を説明していきましょう。JSPページでは、式言語に用意された暗黙オブジェクトを利用することで、これらのリクエストデータに簡単にアクセスすることができます。
フォームから入力された情報を取得

   request.jsp(リスト1)は、テキストボックスで入力された内容に応じて、「こんにちは、<入力値>さん!」という文字列を表示するJSPページです(図2)。

リスト1:request.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<fmt:requestEncoding value="Windows-31J" /> (3)
<html>
<head>
<title>リクエストデータの処理</title>
</head>
<body>
<form method="POST" action="request.jsp">
名前:
<input type="text" name="name" size="10" />
<input type="submit" value="登録" />
</form>
<c:if test="${!empty param['name']}"> (1)
こんにちは、${fn:escapeXml(param['name'])}さん! (2)
</c:if> 

</body>
</html>

入力値に基づいたあいさつ文の表示
図2:入力値に基づいたあいさつ文の表示
(画像をクリックすると別ウィンドウに拡大図を表示します)

   フォーム情報からメッセージを生成しているのはリスト1の1の部分です。

リスト1の1
<c:if test="${!empty param['name']}">
こんにちは、${fn:escapeXml(param['name'])}さん! 
</c:if> 

<c:if>タグはtest属性で指定された条件式がtrueである場合に配下のコンテンツを出力します。つまり、ここではparam['name']の値が!emptyである(空でない)場合、「こんにちは、〜さん!」というメッセージを表示するというわけです。

   paramは、式言語内でアクセス可能な「暗黙オブジェクト」の1つで、フォーム情報(またはクエリ情報)にアクセスするための機能を提供します。暗黙オブジェクト内の情報には、下記のうちのいずれかの記述でアクセスすることができます(注5)。

${object['field']}
${object.field}

※注5:
このような記述の柔軟性は式言語の特長の1つですが、コードの可能性という観点からも、同一のアプリケーション内で複数の記述を混在させるのは極力避けるべきです。

   また、emptyは式言語内で利用可能な演算子です。式言語では演算子を利用することで、式の評価や四則演算、比較など一般的な演算を行うことができます。

   表2に式言語内で利用可能な主な暗黙オブジェクトを、表3に利用可能な主な演算子をあげておきます。なお、演算子は同等の機能を持つ別名(エイリアス)で置き換えることも可能です。

暗黙オブジェクト 概要
param リクエストパラメータを取得
paramValues リクエストパラメータを取得(複数値)
header ヘッダ値を取得
headerValues ヘッダ値を取得(複数値)
initParam 初期化パラメータを取得
cookie Cookie値を取得
pageScope ページ属性を取得
requestScope リクエスト属性を取得
sessionScope セッション属性を取得
applicationScope コンテキスト属性を取得
pageContext PageContextオブジェクトを取得

表2:式言語で利用可能な主な暗黙オブジェクト

分類 演算子(別名) 概要
代数 + 加算
- 減算
* 積算
/(div) 除算
%(mod) 剰余
比較 ==(eq) 等しい
!=(ne) 等しくない
>(gt) より大きい
>=(ge) 以上
<(lt) より小さい
<=(le) 以下
論理 &&(and)
||(or) 集合和
!(not) 否定
その他 empty null、または空文字列

表3:式言語で利用可能な演算子

   例えば、演算子には「<」や「>」「&」「%」のように、HTMLやJSPにおける予約文字が含まれるため、文脈によってはコンテナが正しく解釈できない場合があります。そのような場合に、エイリアスを利用することでトラブルを防ぐことができます。

   次回はfn:escapeXmlなど文字のエスケープに関する部分について説明します。

前のページ  1  2


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

INDEX
第6回:リクエストデータの利用(前編)
  リクエストデータを利用しよう
JSPでリクエストデータを取得する