JavaServer Pages
JavaServer Pagesの最新ニュースをまとめて検索!
JavaServer Pages(JSP)は、HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にウェブページを生成してクライアントに返す技術のこと。
目次 |
[編集] 概要
Javaのコードは、<%と%>記号で囲まれた部分に書かれる。HTMLの中にスクリプトが断片的に見えるため、この記法をスクリプトレットと呼ぶ。定義されたカスタムタグライブラリを使用すればスクリプトレットを使わずに独自のタグでコードを埋め込むことができる。
サーブレットの機能のひとつとして実装されている。
サーブレットと違い、HTMLの中でデザイン部分とプログラム部分を分けて書くためにある程度までウェブデザイナの負担を減らすこともできる。類似技術としてPHP, ASP,ASP.NETなどがある。
クライアントからのJSPの実行がリクエストされると、アプリケーションサーバのサーブレットコンテナはJSPソースファイルをサーブレットのソースコードに変換する。そしてさらにそのソースコードをその場でコンパイルして実行し、結果をクライアントに返信する。このため、最初はコンパイルの時間がかかるが、いちどコンパイルが実行されると2回目以降は必要なくなるため、結果としてアクセス速度が早くなる。
Apache Struts、Jakarta Project JSTL(JSP Standard Tag Library)などのJSPカスタムタグライブラリを用いることでスクリプトレットを記述する必要性を無くし開発効率を高めることもできる。
Model View Controllerアーキテクチャでは、JSPをView、サーブレットをControllerとしてシステムを作成することが多い。
[編集] 構文
HTMLの中に以下の特殊タグを記述することができる。
| 名称 | タグ | 説明 |
|---|---|---|
| ディレクティブ | <%@ ディレクティブ %> | このJSPファイルの処理時の属性をWebコンテナに伝える |
| 宣言 | <%! 宣言 %> | JSPで使用する変数やメソッドを宣言する |
| スクリプトレット | <% Javaコード %> | タグ内にJavaのコードを自由に記述する |
| 式 | <%= 式 %> | 式の評価結果をHTMLの中に出力する |
| アクション | <jsp:アクション名> | JSPでよく行う処理をタグで簡潔に記述する |
| コメント | <%-- コメント --%> | JSPとしてのコメントを記述する |
ディレクティブの種類としては、以下のものがある。
| 名称 | 説明 | 例 |
|---|---|---|
| page | JSPファイルのエンコーディングやJSPプログラムのコーディングに必要なimport文、セッション管理を行う | <%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %> |
| include | テキストファイルやその他のJSPファイルをインクルードする。インクルードは、JSPからServletに変換される時に行われる。ファイルの拡張子としてJSPを使用せずに他の拡張子を使用する。一般的には、「.jspf」(JSP Fragment)が使用される。 | <%@ include file="header.jspf" %> |
| taglib | カスタムタグを使用できるようにするための設定を行う | <%@ taglib uri="http://www.sample.com/tags/test" prefix="tst" %> |
[編集] JSPアクション
アクションの種類としては、以下のものがある。
- jsp:include
- jsp:param
- jsp:forward
- jsp:plugin
- jsp:fallback
- jsp:getProperty
- jsp:setProperty
- jsp:useBean
Javaのコード中で以下の変数が予め利用できる状態(暗黙オブジェクトとして)で用意されている。
| 変数名 | 説明 |
|---|---|
| out | javax.servlet.jsp.JspWriterクラスのオブジェクト変数 |
| request | javax.servlet.http.HttpServletRequestクラスのオブジェクト変数 |
| response | javax.servlet.http.HttpServletResponseクラスのオブジェクト変数 |
| pageContext | javax.servlet.jsp.PageContextクラスのオブジェクト変数 |
| session | javax.servlet.http.HttpSessionクラスのオブジェクト変数 |
| application | javax.servlet.ServletContextクラスのオブジェクト変数 |
| config | javax.servlet.ServletConfigクラスのオブジェクト変数 |
| page | javax.servlet.jsp.HttpJspPageクラスのオブジェクト変数 |
| exception | java.lang.Throwableクラスのオブジェクト変数 |
[編集] JSP2.0
JSR152で規定された仕様で従来のスクリプトレットでプログラムを記述するだけでなく、Expression Language(式言語)を導入することで可視性の優れたJSPファイルを記述できるようにしたもの。 Expression Languageは、${}で表現する。
${sessionScope.user.id}
Expression Languageでは、以下のような暗黙オブジェクトが利用できる。
| 変数名 | 説明 |
|---|---|
| pageScope | pageスコープからオブジェクトを取得 |
| requestScope | requestスコープからオブジェクトを取得 |
| sessionScope | sessionスコープからオブジェクトを取得 |
| applicationScope | applicationスコープからオブジェクトを取得 |
[編集] 外部リンク
- Apache Jakarta JSTL(英語)
- JSR152(英語)
[編集] 関連項目
|
||||||||||||||
最終更新 2009年11月18日 (水) 12:58 (日時は個人設定で未設定ならばUTC)。
【JavaServer Pages】変更履歴

