わかりやすいJakarta EE -目次-
第1章 Jakarta EEと開発ツール
Section 1 Jakarta EEとは 2
Section 2 JET (Jakarta EE Toolkit) 4
2.1 開発ツールの概要 4
Section 3 開発ツールの準備(Windows編) 6
3.1 準備作業 7
Section 4 開発ツールの準備(MacOS編) 11
4.1 導入作業 11
Section 5 プロジェクトを実行する 14
Section 6 まとめ 16
第2章 HTMLとCSS
Section 1 HTMLの基本 18
1.1 HTMLファイルの作成と表示 18
1.2 基本的なHTML文書を作成して実行する 21
1.3 HTML文書の成り立ち 24
Section 2 HTMLにCSSを適用する 28
2.1 CSSを書いて実行する 28
2.2 CSSの基本形 30
2.3 複数のCSSを適用する 31
Section 3 CSSの詳細 32
3.1 CSSの属性と値 32
3.2 単位 34
3.3 色 34
3.4 セレクタ 35
3.5 HTMLタグのstyle属性にCSSを書く 37
3.6 外部CSSファイルを使用する 38
Section 4 よく使うHTMLタグ 40
4.1 入力フォームとボタン 40
4.2 選択 43
4.3 テキスト入力 44
4.4 リスト、画像、リンク 46
4.5 テーブル 49
4.6 ブロックレベル要素とインライン要素 53
Section 5 画面のレイアウト 56
5.1 テーブルタグによるレイアウト 56
5.2 プロジェクトの読み込みと実行 57
5.3 CSSによるレイアウト 59
Section 6 まとめ 63
要点 63
練習 64
第3章 ウェブアプリケーションの仕組み
Section 1 プロジェクトの構成 66
Section 2 バッキングビーン 69
2.1 バッキングビーンとは 69
2.2 バッキングビーンの作成 70
2.3 アノテーションの役割 72
2.4 アノテーションの追加と自動インポート 74
Section 3 JSFページ 76
3.1 JSFページの構成 76
3.2 ウェブアプリケーションの動作を確認する 79
Section 4 ページナビゲーション 83
4.1 ウェブページの構成 83
4.2 プロジェクトの読み込みと実行 85
4.3 ナビゲーションの実行と確認 88
Section 5 ウェブアプリケーションとPayara Server 90
5.1 ウェブアプリケーションのパッケージング 90
5.2 Payara Serverの操作方法 91
Section 6 まとめ 93
要点 93
練習 94
第4章 JSFの基礎
Section 1 JSFの仕組み 98
1.1 HTTP通信とMVCアーキテクチャ 98
1.2 JSFとは 99
1.3 FacesServlet 100
1.4 JSFのライフサイクル 102
1.5 web.xml 105
Section 2 Faceletsタグの概要 109
2.1 Faceletsタグの分類 109
2.2 ネームスペース宣言 110
2.3 主要なタグ一覧 110
Section 3 リソースの管理と利用 113
3.1 resourcesフォルダ 113
3.2 リソースの指定方法 113
3.3 リソースのバージョニング 115
3.4 JavaScriptを使用する 116
Section 4 まとめ 120
要点 120
練習 121
第5章 JSF:入力と出力の基本
Section 1 表とレイアウト 124
1.1 h:panelGridの基本 124
1.2 h:panelGridの属性 126
1.3 h:panelGridで見栄えのする表を描く 127
1.4 Faceletsタグの属性のまとめ 129
Section 2 テキストと画像の出力 131
2.1 テキスト出力(h:outputText) 131
2.2 フォーマット出力(h:outputFormat) 135
2.3 ラベル(h:outputLabel) 136
2.4 テキスト出力タグの属性 137
2.5 画像出力(h:graphicImage) 137
Section 3 画面からの入力 139
3.1 入力領域(h:inputText、h:inputTextarea) 139
3.2 パスワード入力(h:inputSecret) 141
3.3 隠し項目(h:inputHidden) 142
3.4 入力タグの属性 143
Section 4 メッセージ処理 145
4.1 項目ごとにエラーメッセージを表示する(h:message) 145
4.2 エラーメッセージをまとめて表示する(h:messages) 147
4.3 メッセージの種類とメッセージタグの属性 148
4.4 エラーメッセージをカスタマイズする 149
Section 5 まとめ 151
要点 151
練習 152
第6章 JSF:ボタン・リンクと選択
Section 1 ボタンとリンク 156
1.1 postとgetの違い 156
1.2 コマンドボタン(h:commandButton) 158
1.3 コマンドリンク(h:commandLink) 160
1.4 h:link 162
1.5 h:button 166
1.6 h:outputLink 167
1.7 ボタンとリンクの属性 168
Section 2 選択のタグ 169
2.1 h:selectBooleanCheckbox 170
2.2 h:selectManyCheckbox 172
2.3 h:selectOneRadio 178
2.4 h:selectOneListbox 181
2.5 h:selectManyListbox 183
2.6 h:selectOneMenu 185
2.7 h:selectManyMenu 187
2.8 選択肢と選択タグの属性 188
Section 3 まとめ 190
要点 190
練習 193
第7章 表作成、HTML5
Section 1 データテーブル 198
1.1 データテーブルの基本 198
1.2 h:dataTableで表示できるもの201
1.3 f:facetによるヘッダ、フッタ、キャプションの追加 202
1.4 CSSを使って見やすい表にする 203
Section 2 実用的なデータテーブル 206
2.1 編集できるようにする 206
2.2 編集できるデータテーブルの作成方法 207
2.3 クリックした行のオブジェクトを取得する 210
2.4 h:dataTableの属性 214
Section 3 HTML5とFaceletsの連携 215
3.1 HTMLタグをFaceletsタグとして使う 215
3.2 Faceletsタグの中にHTML5の属性を書く 217
Section 4 まとめ 219
要点 219
練習 221
第8章 コンバータとバリデータ
Section 1 標準コンバータ 224
1.1 標準コンバータ 224
1.2 日付時刻のコンバータ(f:convertDateTime) 225
1.3 整数のコンバータ(f:convertNumber) 231
Section 2 標準バリデータ 234
Section 3 エラーメッセージのカスタマイズ 238
3.1 プロパティファイルの作成 238
3.2 プロパティファイルの編集 239
3.3 JSFシステムに登録する 241
Section 4 ビーン・バリデーション 242
4.1 ビーン・バリデーションとは 242
4.2 ビーン・バリデーションで使えるアノテーション 242
4.3 ビーン・バリデーションの適用方法 245
4.4 ゲッターへの指定 247
4.5 メッセージバンドルの利用 248
Section 5 バリデータの作成 250
5.1 インタフェースの作成 250
5.2 検証を行うクラス(バリデータ)の作成 252
Section 6 クラスレベルのバリデーション 255
Section 7 まとめ 260
要点 260
練習 262
第9章 Ajax機能
Section 1 Ajax機能とは 266
1.1 Ajaxが必要なケースの例 267
Section 2 Ajax機能による改良 270
2.1 Ajax機能の使用方法(f:ajaxタグ) 270
2.2 スコープアノテーションを変更する 272
Section 3 Ajaxコマンドボタン 274
Section 4 Ajaxバリデーション 276
4.1 Ajaxバリデーションの例題プログラム 277
4.2 Ajax処理とスコープアノテーション 279
4.3 JSFのライフサイクルとAjax処理 280
Section 5 f:ajaxタグの属性と指定できる値 281
Section 6 まとめ 283
要点 283
練習 284
第10章 リソースバンドルと国際化
Section 1 リソースバンドル 286
1.1 プロパティファイルの作成と登録 287
1.2 リソースバンドルの適用 290
Section 2 リソースバンドルの国際化 292
2.1 国際化とは 292
2.2 ロケールファイルの作成 293
2.3 ロケールファイルの編集 293
2.4 ロケールの登録 294
Section 3 まとめ 296
要点 296
練習 297
第11章 テンプレート機能
Section 1 テンプレート機能 300
1.1 テンプレート機能とは 300
1.2 テンプレートファイルの作成 301
1.3 テンプレートファイル 305
Section 2 テンプレート用表示データの作成 307
2.1 content-1.xhtmlファイルの作成 307
2.2 content-1.xhtmlの編集 307
Section 3 テンプレートファイルを使用する 309
3.1 index.xhtmlの作成 309
3.2 output.xhtmlの作成 311
3.3 テンプレート関連タグのまとめ 312
Section 4 まとめ 313
要点 313
練習 314
第12章 CDIー新しいオブジェクトの作り方
Section 1 CDIとは 318
1.1 CDIを使ってみる 319
1.2 CDIのスコープアノテーション 322
1.3 FacesContextとServletContext 323
1.4 インジェクションポイント 330
Section 2 Conversation(会話)スコープ 331
2.1 例題の画面推移 331
2.2 会話処理の開始と終了 332
2.3 JSFページの内容 334
Section 3 複数ページをまとめるFlowスコープ 336
3.1 FLOWスコープ用のフォルダの作成 336
3.2 Flow定義ファイルの作成 336
3.3 JSFページの書き方 338
3.4 バッキングビーンの書き方 339
Section 4 インジェクトできるようにする@Produces 341
4.1 @Producesの使い方 341
4.2 Listを返すメソッドに@Producesを付ける 342
4.3 フィールドに@Producersを付ける 343
4.4 インジェクトできるロガーを作る 344
4.5 後始末をするためのディスポーザー 347
Section 5 CDIビーンの実装を使い分ける 351
5.1 設定ファイル(bean.xml)を使う方法 351
5.2 アノテーションを使う方法 352
Section 6 まとめ 356
要点 356
練習 357
第13章 CDIの高度な機能
Section 1 コールバックメソッド 360
1.1 ライフサイクル・コールバックメソッド 360
Section 2 インターセプター(割り込み処理) 363
2.1 カスタムアノテーションの作成 363
2.2 インターセプタを作成する 364
2.3 インターセプタをCDIに登録する 367
2.4 インターセプタを使う 367
Section 3 デコレーター 370
3.1 デコレーターを作成する 370
3.2 beans.xmlに登録する 372
3.3 使用例 373
Section 4 オブザーバー(イベント駆動処理) 375
4.1 同期イベント処理 375
4.2 非同期イベント処理 378
Section 5 まとめ 382
要点 382
練習 383
第14章 Jakarta Enterprise Beans(EJB)
Section 1 Jakarta Enterprise Beansの概要 386
1.1 EJBの種類 386
1.2 DI(依存性注入) 388
1.3 セッションビーンの書き方 388
Section 2 シングルトン・セッションビーン 390
2.1 シングルトンセッションビーンを使う 390
2.2 ウェブアプリケーション(画面1) 391
2.3 ウェブアプリケーション(画面2) 392
2.4 シングルトンセッションビーンで使えるアノテーション 393
Section 3 タイマーサービス 394
3.1 タイマーサービスの起動と終了 394
3.2 タイマーサービスの作り方 395
Section 4 非同期呼び出し 398
Section 5 まとめ 400
要点 400
練習 401
第15章 データベースの基礎
Section 1 データベースとは 404
1.1 リレーショナルデータベース 404
1.2 JPAの役割 405
Section 2 データベースシステムのセットアップ 407
2.1 Dockerのダウンロードとインストール 407
2.2 MySQLデータベースを動かす 409
2.3 Dockerの仕組み 411
2.4 NetBeansからMySQLの起動・停止を行う 413
2.5 NetBeansでデータベースmydbの内容を確認できるようにする 414
2.6 Payara Serverの設定 416
Section 3 データベースの使い方 417
3.1 エンティティの作成 417
3.2 persistence unit (永続性ユニット) 419
3.3 エンティティマネージャーの使い方 421
3.4 入力データをデータベースに保存する 423
3.5 データベースの中身を見る 425
3.6 @Transactionalアノテーション 426
Section 4 CRUD処理 428
4.1 エンティティマネージャーのAPIと使い方 428
4.2 CRUD処理の書き方 430
4.3 バッキングビーンのソースコード 438
Section 5 まとめ 440
要点 440
練習 442
第16章 マッピング・アノテーション
Section 1 マッピング・アノテーションの概要 444
1.1 アノテーションの概要 444
1.2 デフォルトのマッピング 445
Section 2 エンティティの構成を指定する 446
2.1 テーブルの名前や項目の名前を変える 446
2.2 複数のテーブルで構成する 449
2.3 他のクラス全体を1つのフィールドとして組み込む 451
2.4 カラムの名前を変える 452
2.5 カラムをデーベースに保管しないように指示する 452
Section 3 主キーの構成を指定する 453
3.1 主キーを自動生成する 453
3.2 複合キーを使う 454
3.3 複合キーを使う(@IdClass) 458
Section 4 ファイル、列挙、日付と時刻の扱い方 460
4.1 ファイルなどの大きなデータを記録する 460
4.2 列挙の記録方法を指定する 460
4.3 日付と時刻の取り扱い 461
Section 5 マッピングの適用例 462
5.1 エンティティ・クラス 463
5.2 バッキングビーン (全体のソースリストは5.5に掲載) 464
5.3 index.xhtml 466
5.4 画像データの受け渡し 467
5.5 バッキングビーン(全体) 470
Section 6 コレクションとマップを使う 472
6.1 フィールド変数にListやSetを使う 472
6.2 フィールド変数にMapを使う 475
Section 7 まとめ 478
要点 478
練習 480
第17章 オブジェクト関係マッピング(ORM)
Section 1 オブジェクト関係マッピングとは 486
1.1 オブジェクトをフィールドに持つことで関係ができる 486
1.2 ORMの種類 487
Section 2 1方向のOne-to-One 489
2.1 DAOの作成手順 491
2.2 エンティティの新規登録 493
2.3 永続性コンテキストの制約 493
2.4 Customerエンティティの一覧表示 495
2.5 @JoinColumnで外部キーの名前を指定する 495
2.6 カスケードを指定して保存を簡単にする 496
2.7 データベースからの削除(remove) 497
Section 3 双方向のOne-to-One 499
3.1 マッピングの指定方法 499
3.2 エンティティの新規作成 501
3.3 Addressエンティティを読み出してみる 501
Section 4 1方向のMany-to-One 503
4.1 マッピングの指定方法 503
4.2 エンティティの作成とデータベースへの新規登録 504
4.3 社員エンティティを一覧出力する 506
Section 5 1方向のOne-to-Many 507
5.1 マッピングの指定方法 507
5.2 エンティティの作成と登録 509
5.3 講義エンティティの表示 510
Section 6 双方向のOne-to-Many(Many-to-Oneも同じ) 511
6.1 マッピングの指定方法 511
6.2 エンティティの新規登録 512
6.3 エンティティの表示 513
Section 7 1方向のMany-to-Many 514
7.1 マッピングの指定方法 514
7.2 エンティティの作成と登録 516
7.3 エンティティの表示 517
Section 8 双方向のMany-to-Many 518
8.1 マッピングの指定方法 518
8.2 エンティティの作成 519
8.3 エンティティの出力 521
Section 9 まとめ 523
要点 523
練習 525
第18章 問い合わせ言語JPQL
Section 1 JPQL TEST 528
1.1 JPQL TESTについて 528
1.2 JPQL TESTで操作するデータベーステーブル 529
Section 2 JPQLの書き方 532
2.1 SELECT文 532
2.2 集計関数 534
2.3 識別変数とPath式 535
Section 3 where句で使える演算子 536
3.1 いろいろな演算子 536
3.2 演算子の使い方 537
Section 4 JPQLの中で使える関数 541
Section 5 distinctとコンストラクタ式 542
5.1 重複を取り除くDISTINCTオペレータ 542
5.2 結果からオブジェクトを作るコンストラクタ式 543
Section 6 レコードを結合するJOIN 545
6.1 2つのエンティティの組み合わせ 545
6.2 内部結合(INNER JOIN) --- エンティティ内部のListとの直積 546
6.3 外部結合(LEFT JOIN)--- 相手がnullでも直積を取る 548
Section 7 一括更新と一括削除 549
7.1 一括更新 549
7.2 一括削除 549
Section 8 JPQLをJavaプログラムから実行する 551
8.1 動的クエリ Query型 551
8.2 動的クエリ TypedQuery型 553
8.3 コンストラクタ式による検索結果の抽出 554
8.4 更新と削除 556
8.5 名前付きクエリ 557
8.6 メソッドのまとめ 560
8.7 ORMでマッピングされたエンティティの削除 560
Section 9 N+1問題 564
9.1 デフォルトのフェッチタイプ 564
9.2 N+1問題とは 564
9.3 EAGERフェッチに変えても問題は解決されない 568
9.4 LEFT JOIN FETCH 569
9.5 マルチLEFT JOIN FETCH 570
Section 10まとめ 573
要点 573
練習 574
第19章 セキュリティAPI
Section 1 どのページに制限をかけるか指定する 576
Section 2 利用者を登録する 579
2.1 テーブルの構成とエンティティクラス 579
2.2 データベースへの登録処理 581
Section 3 データベースストアの使用設定 584
3.1 アノテーションで設定する 584
3.2 論理JNDI名を使えるようにする 585
Section 4 認証方式の指定 587
4.1 カスタムFORM認証とは 587
4.2 認証方式としてカスタムフォーム認証を指定する 587
Section 5 認証処理の作成 589
5.1 login.xhtmlの作成 589
5.2 login用バッキングビーンの作成 590
5.3 ログアウト用バッキングビーンの作成 592
5.4 認証されているかチェックする仕組み 593
5.5 例題1を実行する 595
5.6 SecurityContext 596
Section 6 まとめ 597
要点 597
第20章 RESTfulウェブサービス
Section 1 RESTfulウェブサービスの概要 600
1.1 RESTとは 600
1.2 RESTfulウェブサービスの構成方法 600
1.3 クライアントプログラムで実行する 602
Section 2 サブURIの指定とPathパラメータ 604
2.1 サブURI 604
2.2 Pathパラメータ 605
Section 3 Queryパラメータ 607
3.1 Queryパラメータ 607
3.2 Querayパラメータのデフォルト値 608
3.3 複数のQueryパラメータ 609
3.4 通信テストプログラムの利用 610
Section 4 HTTPとメディアタイプ 612
4.1 MIMEタイプ 612
4.2 @ProducesとMIMEタイプの選択メカニズム 612
4.3 @Consumes 616
Section 5 戻り値の作成 620
5.1 戻り値に使うResponseクラス 620
5.2 CRUDのウェブサービス 621
Section 6 クライアントAPI 627
6.1 CRUD処理の概要 627
6.2 クライアントAPIの使い方 628
Section 7 まとめ 634
要点 634
第21章 ウェブアプリケーション
Section 1 プログラミングの準備 638
1.1 継承を利用してバッキングビーンを分ける 638
1.2 データベース処理のクラスを作る 638
1.3 ページングマネージャーを作る 639
Section 2 『雑貨屋さん.com』について 641
2.1 商品データ、顧客データの作成 641
2.2 例題システムの画面構成 642
2.3 各画面の機能概要 643
2.4 テンプレート構成 644
Section 3 エンティティの作成 646
3.1 エンティティの種類 646
3.2 エンティティ設計の注意 648
3.3 エンティティの自動生成 648
Section 4 商品の一覧表示(トップページ) 650
4.1 バッキングビーンでの初期化 650
4.2 コマンドリンクとページナビゲーション 652
4.3 メニューバー 654
4.4 商品一覧表示 657
4.5 その他のページ 662
Section 5 ログイン認証 663
Section 6 『雑貨屋さん.com』のソースコード 664
Section 7 まとめ 672
要点 672
課題 673
巻末資料
Section 1 既定のブラウザを設定する方法 676
Section 2 サーバーのデータベース設定(Windows用) 677
2.1 準備作業 ― Javaのパスを環境変数に登録する 677
2.2 Payara Serverのセットアップ 678
Section 3 サーバーのデータベース設定(一般的な方法) 679
3.1 データベースドライバの登録(JETでは不要) 679
3.2 コネクションプールの作成 679
3.3 データソースの作成 681
Section 4 プロジェクトの作成方法 683
Section 5 MySQLの外部ボリュームを変更する 685
Section 6 その他の資料 686
索引