JavaServer_Pages
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "JavaServer Pages" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2021年6月)

JSP拡張子.jsp
MIMEタイプapplication/jsp
初版1999年6月2日 (1999-06-02)
最新版3.0
(2020年10月21日 (3年前) (2020-10-21))
種別テンプレートエンジン
派生元HTML, Java
国際標準JSR 245
ウェブサイトJavaServer Pages Technology

JavaServer Pages (JSP、もしくは: Jakarta Server Pages) は、HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にWebページを生成してクライアントに返す技術のこと。
概要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として用いることが想定されている。
構文
タグ

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

JSPのタグ名称タグ説明
ディレクティブ<%@ ディレクティブ %>このJSPファイルの処理時の属性をWebコンテナに伝える
宣言<%! 宣言 %>JSPで使用する変数やメソッドを宣言する
スクリプトレット<% Javaコード %>タグ内にJavaのコードを自由に記述する
式<%= 式 %>式の評価結果をHTMLの中に出力する
アクション<jsp:アクション名>JSPでよく行う処理をタグで簡潔に記述する
コメント<%-- コメント --%>JSPとしてのコメントを記述する

ディレクティブ

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

ディレクティブの種類名称説明例
pageJSPファイルのエンコーディングや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: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のコード中で以下の変数があらかじめ利用できる状態(暗黙オブジェクトとして)で用意されている。

暗黙オブジェクト変数名説明
outjavax.servlet.jsp.JspWriterクラスのオブジェクト変数
requestjavax.servlet.http.HttpServletRequestクラスのオブジェクト変数
responsejavax.servlet.http.HttpServletResponseクラスのオブジェクト変数
pageContextjavax.servlet.jsp.PageContextクラスのオブジェクト変数
sessionjavax.servlet.http.HttpSessionクラスのオブジェクト変数
applicationjavax.servlet.ServletContextクラスのオブジェクト変数
configjavax.servlet.ServletConfigクラスのオブジェクト変数
pagejavax.servlet.jsp.HttpJspPageクラスのオブジェクト変数
exceptionjava.lang.Throwableクラスのオブジェクト変数

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では、以下のような暗黙オブジェクトが利用できる。

暗黙オブジェクト変数名説明
pageContextjavax.servlet.jsp.PageContextクラスのオブジェクト変数
pageScopepageスコープからオブジェクトを取得
requestScoperequestスコープからオブジェクトを取得
sessionScopesessionスコープからオブジェクトを取得
applicationScopeapplicationスコープからオブジェクトを取得
paramリクエストパラメータを格納するMapオブジェクト
paramValues複数の値を持つリクエストパラメータを格納するString型配列
headerリクエストヘッダーと値を格納するMapオブジェクト
headerValues複数の値を持つリクエストヘッダーを格納するString型配列
cookieクッキーを格納するMapオブジェクト
initParamコンテクスト初期化パラメータを格納するMapオブジェクト

歴史

歴史バージョンJSRリリース日
1.01999年6月2日
1.11999年12月17日
1.2 ⇒
532001年9月25日
2.0 ⇒1522003年11月24日
2.1 ⇒2452006年5月11日
2.2(2.1 Maintenance Release)2009年12月10日
2.3(2.1 Maintenance Release2)2013年6月12日

批判

「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]
脚注^ サーブレットでは`println`メソッドが頻繁に現れて、可読性が低下するため
^ “ ⇒エンタープライズ Java テクノロジ Tech Tips”. オラクル (2003年12月22日). 2014年3月12日閲覧。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:27 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef