JSP(JavaServer Pages)
  ・Webコンテナで動作するJavaテクノロジー
  ・HTMLにJavaコードを埋め込み動的なWebページを生成
  ・ファイルの拡張子は「.jsp」
  ・JSPファイルは、Webコンテナによって自動的にサーブレットに変換され動作する。
  ・JSPとサーブレット:作成者側の成果物イメージが違うだけで、機能的には同じ。
JSP:HTMLの中にJavaのソースコード
サーブレット:Javaのソースコードの中にHTML

JSPファイルの作成
  ・プロジェクト右クリック、新規、JSPファイル選択

JSPファイルの編集
  ・エディタで編集
  ・EclipseでのJSP文法エラー表示
メニューバー>ウインドウ>設定>検証
「JSP コンテンツ・バリデーター」の「マニアル」と「ビルド」をチェック
「JSP 構文バリデーター」の「マニアル」と「ビルド」をチェック

JSPファイルの実行
  ・JSPファイル単独の場合
JSPファイル、右クリック>実行サーバーで実行

JSPの動作
  ①JSPに対して初回リクエスト→Webコンテナは対応するJSPをサーブレットに変換
  ②Webコンテナは、サーブレットをコンパイルし、classファイルを生成
  ③Webコンテナは、classファイルをインスタンス化してメモリ上にロードし、プログラムを実行
  ④Webコンテナは、プログラムの実行結果をレスポンスとしてWebブラウザに返す。
  ⑤同じJSPに2度目の要求が来ると、ロード済のプログラムを実行
  ⑥JSP消滅時にはWebコンテナが、対応するサーブレットインスタンスの消滅処理を実行

JSPの構成要素
  ・JSPファイルには、HTMLファイルに記述できる要素の他、JSPタグを記述できる。
HTMLコメント、<!--・・・--!>
  ・JSPには、定義済みオブジェクト(暗黙オブジェクト)を用いた処理を書ける。

JSPタグ
JSP基本タグスクリプトレット<%・・・%>Javaのコード
<%=・・・%><%=i%>回目
宣言<%!・・・%>フィールドやメソッドの宣言
コメント<%--・・・--%>Java独自のコメント
ディレクティブ
タグ
pageディレクティブ<%@ page 属性="値" %>JSPファイル全体に関する情報
includeディレクティブ<%@ include 属性="値" %>サーブレット変換時にインクルード
taglibディレクティブ<%@ taglib 属性="値" %>タグライブラリの情報
アクションタグ<JSP:include>
<JSP:forward>
<JSP:param>他

JSP基本タグ
  ・作成するプロジェクト(WebApp_jsp_BasicTag)のEclipse ProjectExplorer
  ・使用するJSP hello.jsp

JSPディレクティブタグ
  ・作成するプロジェクト(WebApp_jsp_IncludeDirective)のEclipse ProjectExplorer
  ・使用するJSP menu.jspmember-page_1.jspmember-page_2.jspheader.jsp

定義済みオブジェクト(暗黙オブジェクト)
  ・特に宣言しなくても使用できるオブジェクト
  ・Webコンテナで暗黙的に生成される。
  ・JSPで、それぞれのオブジェクトに対応するクラスのメソッドを利用できる。
applicationjavax.servlet.ServletContext
configjavax.servlet.ServletConfig
exception発生した例外クラス
outjavax.servlet.JspWriter<%out.println("Hello"); %>
pageなし
pageContextjavax.servlet.jsp.PageContext
requestjavax.servlet.http.HttpServletRequest
responsejavax.servlet.http.HttpServletResponse
sessionjavax.servlet.http.HttpSession

requestオブジェクト
  ・作成するプロジェクト(WebApp_jsp_request)のEclipse ProjectExplorer
  ・使用するJSP apply-form.htmlaccept.jsp

sessionオブジェクト
  ・作成するプロジェクト(WebApp_jsp_session)のEclipse ProjectExplorer
  ・使用するJSP enter.htmlexit.jspmember-page_1.jspmember-page_2.jspmenu.jsp

exceptionオブジェクト
  ・作成するプロジェクト(WebApp_jsp_exception)のEclipse ProjectExplorer
  ・使用するJSP contents.jsperror_page.jsp
  ・pageディレクティブのisErrorPage属性に「true」を指定
  ・for (int i = 0; i <= list.size(); i++)、i=3でerror
  ・Eclipse内部ブラウザでのエラー表示の場合は、ブラウザをHTTPエラーが出るように詳細設定

アクションタグ
  ・JSPページ内でよく使用する定型的な処理を記述
  ・開始タグと終了タグを使い要素を指定
  ・XMLの記法に沿って記述
  ・<jsp:include>タグにより、他のファイルの実行結果を動的にインクルード
  ・<jsp:param>タグにより、インクルードされるページにリクエストパラメータ渡せる。

EL式(Expression Language)
  ・JSPファイルで、演算結果や値の参照結果を出力
  ・EL式の利用で、JSPファイルの可読性が向上
  ・${出力する値}:算術演算の結果
${2 + 3}
  ・${属性名}:いずれかのスコープに設定された属性値を参照
  ・${スコープ.属性名}:特定のスコープに設定された属性値を参照
${requestScope.message}:EL式で使用できる暗黙オブジェクト
JSPで使用できる暗黙オブジェクトとは異なる。
  ・${Bean名.プロパティ名}
  ・${スコープ.Bean名.プロパティ名}

JSTL(JavaServer Pages Standard Library:JSP標準ライブラリ)
  ・JSPで利用できるカスタムタグ(独自に作成したタグ)を集めたライブラリ
  ・JSTLの利用で、JSPのファイルをより簡素に記述できる。

JSTLの利用(5つのカテゴリに分類)
  ・taglibディレクティブを用いて、使用するタグに応じた内容を記述
タグの接頭辞:prefix属性
ライブラリを識別:uri属性
  ・coreタグライブラリ
値の出力、分岐、繰り返しなど、基本的な機能
  ・i18n(国際化対応:internationalization)タグライブラリ
数値や日付の表示スタイルの設定
  ・functionタグライブラリ
EL式内部で使用
  ・出典元 Apache Taglibs Downloads

EL_JSTL_JavaBeans_sample
  ・作成するプロジェクト(WebApp_jsp_UseBeanElJstl)のEclipse ProjectExplorer
  ・使用するServlet model.dao.ConnectionManager.javamodel.dao.EmployeeDAO.java
model.entity.EmployeeBean.javaservlet.EmployeeAlterConfirmServlet.java
servlet.EmployeeAlterFormServlet.javaservlet.EmployeeAlterServlet.java
servlet.EmployeeDetailServlet.javaservlet.EmployeeListServlet.java
  ・使用するJSP、HTML employee-alter-confirm.jspemployee-alter-form.jsp
employee-alter-result.jspemployee-detail.jsp
employee-list.jspmenu.html