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

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