SlideShare a Scribd company logo
『Java EE 7 徹底入門』
プレゼンテーション層の開発 JSF
2016/02/15 JJUG ナイトセミナー
#JJUG
加藤田 益嗣
@den2sn
Safe Harbor Statement
• 本資料は私個人の見解であり所属会社の見解を反映したものではありません。
• 本資料の作成にあたっては正確な記述につとめましたが、内容に対してなんら
保証をするものではなく、内容に基づくいかなる運用結果に関してもいっさいの
責任を負いません。
22016/02/15 JJUG Night Seminar #JJUG
自己紹介
加藤田 益嗣(Katoda Masuji)
• 日本オラクル株式会社
クラウド・テクノロジーコンサルティング統括本部
シニアコンサルタント
• Java、Java EEの開発技術支援
• Java EE 7 徹底入門[第2~4 章担当]
32016/02/15 JJUG Night Seminar #JJUG
本日話す内容
• 本書の概要
• JSFの概要と構成要素
• 本書では触れられなかった話
42016/02/15 JJUG Night Seminar #JJUG
本書の概要
2016/02/15 JJUG Night Seminar #JJUG 5
アンケート
JSFを使用して開発したことがある方
62016/02/15 JJUG Night Seminar #JJUG
(^_^)/
Java EE 7徹底入門の目次
• 第1章 Java EEの基礎知識
• 第2章 プレゼンテーション層の開発―JSFの基本
• 第3章 プレゼンテーション層の開発―JSFの応用 その1
• 第4章 プレゼンテーション層の開発―JSFの応用 その2
• 第5章 ビジネスロジック層の開発―CDIの利用
• 第6章 ビジネスロジック層の開発―EJBの利用
• 第7章 データアクセス層の開発―JPAの基本
• 第8章 データアクセス層の開発―JPAの応用
• 第9章 RESTful Webサービスの開発
• 第10章 バッチアプリケーションの開発
72016/02/15 JJUG Night Seminar #JJUG
約150
ページ
Java EE 7徹底入門の目次(第2~4章)
• 第2章 JSFの基本
– JSF概要
– JSFの構成要素
– JSFの画面遷移
– JSF の内部処理
– JSF の基本設定
– フェースレットタグライブラリ
– EL(Expression
Language)
• 第4章 JSFの応用 その2
– 認証/認可
– 国際化
– ブックマーカビリティ
– フェーズリスナ
– Java EE 7で導入されたJSF
の機能
– まとめ
2016/02/15 JJUG Night Seminar #JJUG 8
• 第3章 JSFの応用 その1
– 入力チェック
– コンバータ
– コンポーネントのカスタマイズ
– フェースレットテンプレート
– HTML5フレンドリマークアップ
– Ajax
第2~4章で説明するJSFの主な機能
92016/02/15 JJUG Night Seminar #JJUG
サーバ
フェースレット
マネージドビーン
タグライブラリ
EL
画面遷移 スコープ
入力チェック コンバータ
コンポーネント
テンプレート
HTML5
Ajax
認証認可
国際化
ブックマーカビリティ
フェーズリスナ
ユーザ
第2章
第3章
第4章
サンプルアプリケーション
• ナレッジバンク
– ナレッジを収集するためのシステム
– ナレッジの投稿、コメントの追加が可能
– 本書でより実用的な機能を説明するために作成
102016/02/15 JJUG Night Seminar #JJUG
サンプルアプリケーションのデモ
2016/02/15 JJUG Night Seminar #JJUG 11
サンプルアプリケーションの画面遷移
2016/02/15 JJUG Night Seminar #JJUG 12
アカウント登録ログイン
ナレッジ変更
ナレッジ投稿
アカウント登録
登録
ログイン
検索
詳細
変更
投稿
削除
コメント投稿
ナレッジ投稿
ログアウト
変更
ナレッジ詳細
ナレッジ一覧
JSFの概要と構成要素
2016/02/15 JJUG Night Seminar #JJUG 13
JSFとは
• Java EE 5から導入されたプレゼンテーション層を作成するための
フレームワーク
• Java EE 7でのバージョンはJSF2.2
142016/02/15 JJUG Night Seminar #JJUG
データ
ベース
アプリケーションサーバ
JPA
jBatch
EJB
JAX-RS
JSF
CDI
アプリケーション
プレゼンテーション層のフレームワーク
• 主にブラウザの画面とサーバ間の処理を受け持つ
• Java EE 5以前はサーブレット+JSPを使用
– HTTPアクセスに対する低レイヤーの機能を提供
• サーブレットだけでは値のマッピングや入力チェックなどWebアプリ
ケーションで必要な機能がなく、サードパーティ製フレームワークを
併用
– Struts、Spring MVC等
• Java EE 5以降はJSFをJava EEの標準仕様として導入
152016/02/15 JJUG Night Seminar #JJUG
プレゼンテーション層のフレームワークイメージ
2016/02/15 JJUG Night Seminar #JJUG 16
サーブレット
Struts Spring MVC JSF
Webアプリケーション Webアプリケーション Webアプリケーション
ブラウザとHTTP通信を
するための機能を提供
値のマッピングや
入力値のチェックやなど、
Webアプリケーションで必要な
機能を提供
開発するアプリケーション
Java EEの仕様で提供
JSFの構成要素
• JSFを構成する要素にはフェースレットとマネージドビーンがある
2016/02/15 JJUG Night Seminar #JJUG 17
フェースレット
マネージドビーン
画面の定義
処理の定義
フェースレットとは
• 画面のレイアウトを記述するXHTMLベースのテン
プレートエンジン
• JSF2.0からJSPの代わりに使用
182016/02/15 JJUG Night Seminar #JJUG
フェースレット
マネージドビーン
フェースレットとJSPとの違い
• XHTML(XML)なので記載が厳密
– 記載を統一しやすい
• スクリプトレットが記載できない
– 画面中にJavaのコードが使用できない
– 画面と処理を明確に分離
• 文字列のサニタイジング
– 表示文字列中のHTMLの特殊文字はサニタイジングする
– セキュアに画面が作成
• nullの文字列表示処理
– nullは空文字として表示
• テンプレート機能
– テンプレート機能をタグライブラリで提供
192016/02/15 JJUG Night Seminar #JJUG
フェースレット
マネージドビーン
フェースレットの記載例
• アカウント登録画面
2016/02/15 JJUG Night Seminar #JJUG 20
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>Knowledge Bank</title>
</h:head>
<h:body>
<div id="top_content">
<h:form id="form">
<h1>アカウント登録</h1>
<div class="entry">
<div>
<label>ユーザID</label>
<div>
<h:inputText id="userId" value="#{accountBean.account.userId}" />
<h:message for="userId" errorClass="error"/>
</div>
...
HTMLとほぼ同様の記載
フェースレット
マネージドビーン
フェースレットの構成要素
• フェースレットタグライブラリ
• EL(Expression Language)
212016/02/15 JJUG Night Seminar #JJUG
フェースレット
マネージドビーン
入力と登録ボタン部分のソースコード
222016/02/15 JJUG Night Seminar #JJUG
<label>ユーザID</label>
<div>
<h:inputText id="userId" value="#{accountBean.account.userId}" />
<h:message for="userId" errorClass="error"/>
</div>
フェースレットが提供する
タグライブラリ
入力項目とマネージドビーンとの紐
付け(バインド)にEL式を利用
<h:commandButton action="#{accountBean.register()}" value="登録" />
ボタンを押下するとregisterメ
ソッドが呼ばれる
フェースレット
マネージドビーン
マネージドビーンとは
• フェースレットとバインドするJavaのクラス
• 入力値の保持やボタン押下時の処理などを行う
232016/02/15 JJUG Night Seminar #JJUG
フェースレット
マネージドビーン
マネージドビーンの構成要素
• スコープ
• バインドする値の保持
• ビジネスロジックの呼び出し
• 画面遷移
242016/02/15 JJUG Night Seminar #JJUG
フェースレット
マネージドビーン
マネージドビーンの記載例
• アカウント登録マネージドビーン
252016/02/15 JJUG Night Seminar #JJUG
@Named
@RequestScoped
public class AccountBean {
private Account account = new Account();
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
public String register() {
account.setAccountGroup("userGroup");
account.setPassword(PasswordUtil.hash(password));
accountFacade.create(account);
return "/login?faces-redirect=true";
}
}
スコープの定義
入力値を保有する
フィールド
ボタン押下時の処理
ログイン画面に遷移
フェースレット
マネージドビーン
フェースレットとマネージドビーンの処理イメージ
262016/02/15 JJUG Night Seminar #JJUG
アカウント登録画面
(account/register.xhtml)
アカウント登録マネージドビーン
(AccountBean.java)
アカウント情報(account)
・ユーザID(userId)
・名前(name)
・メールアドレス(mail)
・パスワード(password)
登録処理(register) {
}
ユーザID
アカウント登録
名前
メールアドレス
パスワード
登録
EL式でバインド
ビジネス
ロジック
の処理へ
コンポーネントを主軸にコードを作成するためコンポーネント指向と言われる。
本書では触れられなかった話
2016/02/15 JJUG Night Seminar #JJUG 27
本書では触れられなかった話
• JSFのより詳細な機能
• Java EE 8(JSF2.3)
• MVC1.0
282016/02/15 JJUG Night Seminar #JJUG
JSFのより詳細な機能
• カスタムコンポーネント
• イベントハンドリング
– Value Change Events
– Action Events
• ビーンバリデーション
– グループ化機能
• EL
– Lambda式
– 文字列連結オペレータ
292016/02/15 JJUG Night Seminar #JJUG
本資料でも詳細な説明は省略。
Java EE 8(JSF2.3)
• JSF2.3で予定されている新機能
– WebSocket対応
• <f:socket>タグ
– マルチフィールドバリデーション
• <f:validateWholeBean>
– Java Timeサポート
• Date and Time APIのサポート
– EL式で利用可能な暗黙オブジェクトの追加
• facesContext、session、viewScopeなど
– マネージドビーン等への@Inject可能なオブジェクトの追加
• FacesContext、ExternalContextなど
302016/02/15 JJUG Night Seminar #JJUG
MVC1.0
• MVC1.0
– アクション指向フレームワーク
– Java EE 8で導入(現在ドラフト)
– JAX-RSを拡張
– ビューにはフェースレット,JSPをサポート
• 画面のコンポーネントなどの提供は現状なし
– 名前が直接的だけど紛らわしい...
312016/02/15 JJUG Night Seminar #JJUG
MVC1.0実装例
2016/02/15 JJUG Night Seminar #JJUG 32
@Path("hello")
public class HelloController {
@GET
@Controller
public String hello() {
return "hello.jsp";
}
}
@Controllerアノテーションを付
加するとMVCの処理と認識
JAX-RSとほぼ同様の記載
hello.jspに遷移
今後のプレゼンテーションの選択肢
332016/02/15 JJUG Night Seminar #JJUG
どのアーキテクチャを選択しても今後はコンポーネント指向に収束。
Java EE 7 Java EE 8
JSF
JAX-RS+クライアントサイドフレームワーク
(AngularJS、React、Backbone.jsなど)
MVC1.0 + Web Components?
まとめ
• プレゼンテーション層の開発について
– Java EE 7環境でのプレゼンテーション層の選択肢
• サーバサイドでJavaで開発=JSF
• クライアントサイドでJavaScriptで開発=クライアントサイドフレームワーク
+JAX-RS
– JSFはかなり成熟(1.0は2004年3月にリリース)
• 本書について
– Java EE 7のJSFを使用した機能を概ね網羅
– サンプルアプリケーションをベースとしたより実践的な説明
342016/02/15 JJUG Night Seminar #JJUG
以上です。
ご清聴ありがとうございました。
2016/02/15 JJUG ナイトセミナー
#JJUG
加藤田 益嗣
@den2sn
Ad

Recommended

PPTX
3.Java EE7 徹底入門 CDI&EJB
Tsunenaga Hanyuda
 
PPTX
Jakarta EE + MicroProfile との付き合い方
Hirofumi Iwasaki
 
PDF
ビッグデータ時代に対応する最新データベース・テクノロ ジーとは?
japan_db2
 
PDF
Z Garbage Collector
David Buck
 
PDF
Java女子部 Java EEハンズオン(応用編)
Misaki Kajiura
 
PDF
JavaEE6 First Application #glassfishjp
Satoshi Kubo
 
KEY
Beginning Java EE 6 勉強会(4) #bje_study
George Okada
 
PDF
Strutsから移行する人のためのjsf基礎
Satoshi Kubo
 
PPTX
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
 
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
 
PDF
AI技術共有会2025-06-05_DeepResearchの理解と実践.pdf
Takuma Oda
 
PPTX
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 
PPTX
色について.pptx .
iPride Co., Ltd.
 
PDF
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
PPTX
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
Search Engine Journal
 
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
Chiara Aliotta
 
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
OECD Directorate for Financial and Enterprise Affairs
 
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
SocialHRCamp
 
PDF
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
PDF
Everything You Need To Know About ChatGPT
Expeed Software
 
PDF
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
PDF
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
PDF
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
PDF
Skeleton Culture Code
Skeleton Technologies
 
PDF
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
PDF
Content Methodology: A Best Practices Report (Webinar)
contently
 
PPTX
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
PDF
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
PDF
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 

More Related Content

Recently uploaded (7)

PPTX
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
 
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
 
PDF
AI技術共有会2025-06-05_DeepResearchの理解と実践.pdf
Takuma Oda
 
PPTX
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 
PPTX
色について.pptx .
iPride Co., Ltd.
 
PDF
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
PPTX
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
 
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
 
AI技術共有会2025-06-05_DeepResearchの理解と実践.pdf
Takuma Oda
 
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 
色について.pptx .
iPride Co., Ltd.
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 

Featured (20)

PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
Search Engine Journal
 
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
Chiara Aliotta
 
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
OECD Directorate for Financial and Enterprise Affairs
 
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
SocialHRCamp
 
PDF
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
PDF
Everything You Need To Know About ChatGPT
Expeed Software
 
PDF
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
PDF
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
PDF
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
PDF
Skeleton Culture Code
Skeleton Technologies
 
PDF
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
PDF
Content Methodology: A Best Practices Report (Webinar)
contently
 
PPTX
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
PDF
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
PDF
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
PDF
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
PDF
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
PDF
Getting into the tech field. what next
Tessa Mero
 
PDF
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
PDF
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
2024 Trend Updates: What Really Works In SEO & Content Marketing
Search Engine Journal
 
Storytelling For The Web: Integrate Storytelling in your Design Process
Chiara Aliotta
 
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
OECD Directorate for Financial and Enterprise Affairs
 
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
SocialHRCamp
 
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
Everything You Need To Know About ChatGPT
Expeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Ad

JavaEE7徹底入門 プレゼンテーション層の開発 JSF