SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

GlassFishからアプローチするJava

GlassFishからアプローチするJava~入門編~
第3回「Webアプリケーションの作成 JSPの基礎を学ぶ」

JSPはWebアプリケーションのUIの基本

式言語って何?

 プログラミング言語の文法を勉強すると文(statement)と式(expression)という言葉に出くわします。式の大きな特徴は値を返すことです。式言語も結果として値を返す言語だと言えます。式言語では、演算式の結果を返すことは当然として、オブジェクトのプロパティの値を返すことができます。さらにJSP 2.0以降からJavaのクラスメソッドを呼び出すことができ、戻り値をそのまま値として返すことができるようになりました。

 また、以下の特徴も魅力となっています。

  • 記法が非常にシンプルである
  • 強制的な型変換の機能があるため、開発者は型を強く意識しなくてもよい
  • 遅延評価も使用可能である(JSP 2.1以降、応用編で説明予定)

記法が非常にシンプルである

 構文は至って簡単で${expr}です。exprには演算式、オブジェクトのプロパティ値、クラスメソッドの呼び出しが入ります。応用編で説明予定の遅延評価(deferred evaluation)では#{expr}を使用します。JSPで遅延評価が行えないと思っている方が多いですが、GlassFish 2.1.1では遅延評価もJSPでサポートしています。JSP 2.1での大きな変更点の1つです。

演算式の記法

 ${a * b}は変数aとbの積算を表します。非常に直感的で分かりやすい表記です。

オブジェクトのプロパティ値の記法

 ${employee.address}はemployeeオブジェクトのaddressプロパティの値を表します。

 ${arrayX[0]}はarrayXというListオブジェクトの最初の値を表しています。$mapY["country"]はmapYというMAPオブジェクトの"country"というキーに紐づいている値を表しています。この.[]演算子はECMAScriptの記法に従っています。

クラスメソッド呼び出しの記法

 ${myfish:mymedhod}はmyfishタグライブラリのmymethodクラスメソッドの戻り値を表します。クラスメソッドの呼び出しは後ほど説明するタグライブラリのタグと同様、デプロメント・ディスクリプタ(web.xml)やTLD(Tag Library Descriptor)の記述を通し、Javaのクラスメソッドを呼び出す仕組みになっています。

強制的な型変換の機能があるため、開発者は型を強く意識しなくてもよい

 テンプレート・テキストの中でEL式はString型の値を返します。JSPの中ではコンテキストに応じて型変換してくれるためキャストなしの記述が可能です。具体的に何に変換されるかを知りたい場合は「Expression Language Specification Version 2.1」を参照ください。加算、減算、積算の場合、表4のような型に変換されます。AとBがオペランド(被演算子)です。自動で型変換してくれるのはありがたい限りですが、何に変換されるかは上記仕様書で確認しながらコーディングするのが無難かと思われます。仕様書はいつも手元に置いておくことをお薦めします。

表4.算出演算の場合の型変換(加算、減算、積算の例)
A B
null null (Long)0が返される
いずれかがBigDecimal A、BともBigDecimalに型変換された後演算される。
いずれかがFloat、Double、指数表記 A、BともBigDecimalに型変換された後演算される。
上記以外の場合、A、BともDoubleに型変換された後演算される。
いずれかがBigInteger A、BともBigIntegerに型変換された後演算される。
上記以外の場合 A、BともLongに型変換された後演算される。

次のページ
スクリプティング要素って何?

この記事は参考になりましたか?

GlassFishからアプローチするJava連載記事一覧

もっと読む

この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4775 2010/02/17 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー