トップQs
タイムライン
チャット
視点

JavaServer Pages

HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にWebページを生成してクライアントに返す技術 ウィキペディアから

Remove ads

JavaServer Pages (JSP、もしくは: Jakarta Server Pages) は、HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にWebページを生成してクライアントに返す技術のこと。

概要 拡張子, MIMEタイプ ...

概要

Thumb
MVCアーキテクチャにおけるJSP, Java Servlet, JavaBeansの位置づけ

Javaのコードは、<%%>記号で囲まれた部分に書かれる。HTMLの中にスクリプトが断片的に見えるため、この記法をスクリプトレット (: scriptlet) と呼ぶ。これよりプログラムコードをタグに見立てることができるため、プログラムとデザインの棲み分けができる。定義されたカスタムタグライブラリを使用すればスクリプトレットを使わずに独自のタグでコードを埋め込むことができる。

サーブレットの機能のひとつとして実装されている。

サーブレットと違い、HTMLの中でデザイン部分とプログラム部分を分けて書くためにある程度までウェブデザイナの負担を減らすこともできる。また、静的な出力が多い場合に適している[1]。類似技術としてPHPASPASP.NETなどがある。

クライアントからのJSPの実行がリクエストされると、アプリケーションサーバサーブレットコンテナはJSPソースファイルをサーブレットのソースコードに変換する。そしてさらにそのソースコードをその場でコンパイルして実行し、結果をクライアントに返信する。このため、最初はコンパイルの時間がかかるが、いちどコンパイルが実行されると2回目以降は必要なくなるため、結果としてアクセス速度が早くなる。

カスタムタグライブラリとしては、Javaの標準仕様の一部として定義されたJSTLや、Apache Strutsのようなフレームワークが独自に定義したものがあり、こうしたタグを使用することでより可読性を高めることができる。JSP2.0では、従来のタグハンドラクラスを作成しなくてもカスタムタグライブラリを作成できるタグファイルの仕組みが導入された。タグファイルは、JSPの文法で作成されるファイルで拡張子は .tagとなる。

Model View Controllerアーキテクチャでは、JSPをView、Java ServletをController、JavaBeansをModelとして用いることが想定されている。

Remove ads

構文

要約
視点

タグ

HTMLの中に以下の特殊タグを記述することができる。

さらに見る 名称, タグ ...

ディレクティブ

ディレクティブの種類としては、以下のものがある。

さらに見る 名称, 説明 ...

アクション

アクションの種類としては、以下のものがある。

jsp:include
jsp:param
jsp:forward
jsp:plugin
jsp:fallback
jsp:getProperty
jsp:setProperty
jsp:useBean

JSP2.0では、以下のものが追加になった。

jsp:attribute
jsp:body
jsp:doBody
jsp:invoke
jsp:element

暗黙オブジェクト

Javaのコード中で以下の変数があらかじめ利用できる状態(暗黙オブジェクトとして)で用意されている。

さらに見る 変数名, 説明 ...
Remove ads

JSTL

JSTL(JavaServer Pages Standard Tag Library、JSP標準タグライブラリ)は、JSPでよく用いられる標準的な機能を定義したカスタムタグライブラリである。2001年に定義されたJ2EE 1.3において標準仕様の一つとして導入された。[2]

JSTLでは、変数の操作やif文といった標準的な機能を提供するコアライブラリに加え、XML国際化SQLのライブラリ、さらに文字列操作といった関数をまとめたライブラリが提供されている。[3]

EL式

EL式(Expression Language、式言語)は、JSP 2.0で導入された新たな構文で、従来のスクリプトレットに代わってより可読性に優れたJSPファイルを記述できるようにしたもの。EL式はJSPをベースにしたWebアプリケーションフレームワークであるJSFにおいても独自に定義されていたが、後のJSP 2.1, JSF 1.2において一つの仕様に統合され(Unified EL、統合式言語)、さらに2013年のEL 3.0ではJSPから独立したJava EE 7の仕様の一つとなっている。[4]

Expression Languageは、${}で表現する。

${sessionScope.user.id}

Expression Languageでは、以下のような暗黙オブジェクトが利用できる。

さらに見る 変数名, 説明 ...
Remove ads

歴史

さらに見る バージョン, JSR ...

批判

「Murach's Java Servlets and JSP」という本は、JSPにJavaコードを埋め込むことは一般的にはやり方だと述べる。より良い手法は、JSPに埋め込まれたバックエンドのロジックをServlet内のJavaコードに移行することである。この場合、Servletは処理を担当し、JSPはHTMLの表示を担当します。これにより、コードを明確な分離ができる。[5]

2000年に、"Java Servlet Programming"の著者であるJason Hunterは、JSPに関するいくつかの「問題点」を述べた。彼はJSPは「Javaプラットフォームにとって最適な解決策ではないかもしれない」と述べる。[6]

脚注

Loading content...

関連項目

Loading content...

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads