Enviar pesquisa
Carregar
Spring bootでweb 基本編
•
5 gostaram
•
8,722 visualizações
なべ
Seguir
Spring bootを使ったウェブシステム構築の基本
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 25
Baixar agora
Baixar para ler offline
Recomendados
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
Yoshie Kaneno
はじめてのSpring Boot
はじめてのSpring Boot
なべ
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
AWSで作る分析基盤
AWSで作る分析基盤
Yu Otsubo
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
え!? Power BI の画面からデータ更新なんてできるの!? ~PowerApps カスタムビジュアルの可能性~
え!? Power BI の画面からデータ更新なんてできるの!? ~PowerApps カスタムビジュアルの可能性~
Yugo Shimizu
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
株式会社MonotaRO Tech Team
マーブル図で怖くないRxJS
マーブル図で怖くないRxJS
bitbank, Inc. Tokyo, Japan
Recomendados
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・
Yoshie Kaneno
はじめてのSpring Boot
はじめてのSpring Boot
なべ
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
AWSで作る分析基盤
AWSで作る分析基盤
Yu Otsubo
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
え!? Power BI の画面からデータ更新なんてできるの!? ~PowerApps カスタムビジュアルの可能性~
え!? Power BI の画面からデータ更新なんてできるの!? ~PowerApps カスタムビジュアルの可能性~
Yugo Shimizu
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
株式会社MonotaRO Tech Team
マーブル図で怖くないRxJS
マーブル図で怖くないRxJS
bitbank, Inc. Tokyo, Japan
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
apkiban
え!? Power BI の画面からデータ更新なんてできるの!?
え!? Power BI の画面からデータ更新なんてできるの!?
Yugo Shimizu
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
なべ
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Power BI データフロー 早わかり
Power BI データフロー 早わかり
Takeshi Kagata
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
Tadashi Miyazato
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Takahiko Ito
え!?データがオンプレにあるけどPower BI で BI したいの?
え!?データがオンプレにあるけどPower BI で BI したいの?
Yugo Shimizu
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Yugo Shimizu
MLOpsはバズワード
MLOpsはバズワード
Tetsutaro Watanabe
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Power Query Online
Power Query Online
Ryoma Nagata
ビッグデータ処理データベースの全体像と使い分け 2018年version
ビッグデータ処理データベースの全体像と使い分け 2018年version
Tetsutaro Watanabe
20081003
20081003
小野 修司
SpringBootによるDB更新
SpringBootによるDB更新
iPride Co., Ltd.
Mais conteúdo relacionado
Mais procurados
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
apkiban
え!? Power BI の画面からデータ更新なんてできるの!?
え!? Power BI の画面からデータ更新なんてできるの!?
Yugo Shimizu
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
なべ
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Power BI データフロー 早わかり
Power BI データフロー 早わかり
Takeshi Kagata
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
Tadashi Miyazato
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Takahiko Ito
え!?データがオンプレにあるけどPower BI で BI したいの?
え!?データがオンプレにあるけどPower BI で BI したいの?
Yugo Shimizu
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Yugo Shimizu
MLOpsはバズワード
MLOpsはバズワード
Tetsutaro Watanabe
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Power Query Online
Power Query Online
Ryoma Nagata
ビッグデータ処理データベースの全体像と使い分け 2018年version
ビッグデータ処理データベースの全体像と使い分け 2018年version
Tetsutaro Watanabe
Mais procurados
(20)
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
え!? Power BI の画面からデータ更新なんてできるの!?
え!? Power BI の画面からデータ更新なんてできるの!?
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Power BI データフロー 早わかり
Power BI データフロー 早わかり
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
え!?データがオンプレにあるけどPower BI で BI したいの?
え!?データがオンプレにあるけどPower BI で BI したいの?
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Twitterのsnowflakeについて
Twitterのsnowflakeについて
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
MLOpsはバズワード
MLOpsはバズワード
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
Power Query Online
Power Query Online
ビッグデータ処理データベースの全体像と使い分け 2018年version
ビッグデータ処理データベースの全体像と使い分け 2018年version
Semelhante a Spring bootでweb 基本編
20081003
20081003
小野 修司
SpringBootによるDB更新
SpringBootによるDB更新
iPride Co., Ltd.
20080524
20080524
小野 修司
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
Entity Framework 6.1.3 + Windows フォームサンプル アプリケーション構築手順書
Entity Framework 6.1.3 + Windows フォームサンプル アプリケーション構築手順書
Masaki Takeda
G0042 h
G0042 h
silicone69
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
junichi anno
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
Atsushi Fukui
20091030cakephphandson 01
20091030cakephphandson 01
Yusuke Ando
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
ShuheiUda
Mvc conf session_4_ono
Mvc conf session_4_ono
Hiroshi Okunushi
20110607
20110607
小野 修司
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門
Keisuke Fujikawa
sbc_rc_200_RealtimeCompute_handson_ver1.0
sbc_rc_200_RealtimeCompute_handson_ver1.0
洋 謝
構築手順 Ssis イベントログ取込み 第2版
構築手順 Ssis イベントログ取込み 第2版
junichi anno
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
Windows azuremobileservice入門
Windows azuremobileservice入門
Makoto Nishimura
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Shotaro Suzuki
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
Sadao Tokuyama
Semelhante a Spring bootでweb 基本編
(20)
20081003
20081003
SpringBootによるDB更新
SpringBootによるDB更新
20080524
20080524
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Entity Framework 6.1.3 + Windows フォームサンプル アプリケーション構築手順書
Entity Framework 6.1.3 + Windows フォームサンプル アプリケーション構築手順書
G0042 h
G0042 h
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
20091030cakephphandson 01
20091030cakephphandson 01
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Mvc conf session_4_ono
Mvc conf session_4_ono
20110607
20110607
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門
sbc_rc_200_RealtimeCompute_handson_ver1.0
sbc_rc_200_RealtimeCompute_handson_ver1.0
構築手順 Ssis イベントログ取込み 第2版
構築手順 Ssis イベントログ取込み 第2版
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Windows azuremobileservice入門
Windows azuremobileservice入門
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
Mais de なべ
Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎
なべ
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
なべ
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
なべ
Spring bootでweb バリデート編
Spring bootでweb バリデート編
なべ
Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編
なべ
Lombokのススメ
Lombokのススメ
なべ
Mais de なべ
(6)
Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
普通のJavaエンジニアが、なぜ技術書を出版するに至ったか?
Spring bootでweb バリデート編
Spring bootでweb バリデート編
Spring bootでweb ユニットテスト編
Spring bootでweb ユニットテスト編
Lombokのススメ
Lombokのススメ
Spring bootでweb 基本編
1.
基本編
2.
アジェンダ はじめに 階層構造
Repositoryの実装 Serviceの実装 Controllerの実装 まとめ
3.
はじめに Spring Bootを使って、 実際に簡単なWebページを作成する。
4.
階層構造 下記の階層構造でシステムを構築する Controller ブラウザ Service Repository Database TemplateModel Entity Entity Entity Entity Model1.入力値を受け取る 2.ビジネスロジックを書く 3.データの取得・更新をする 4.データを返す 5.データを返す 6.HTMLに変換 実際に下の階層から 実装してみる
5.
Repositoryの実装 Serviceから処理要求を受け取り、 Databaseに対してデータの取得・更新を行う Service Repository Database Entity Entity 3.データの取得・更新をする
4.データを返す
6.
Repositoryの実装 商品のデータ(productテーブル)を制御するRepositoryと データの入れ物のEntityを作成 package sample.springbootweb.repository; /**
productテーブルのRepository */ public interface ProductRepository { } package sample.springbootweb.model; /** productテーブルのEntity */ public class Product { } 「repository」パッケージに productテーブルの Repositoryを作成 「model」パッケージに productテーブルの Entityを作成
7.
Repositoryの実装 ただのクラスをEntityに仕立てる /** productテーブルのEntity
*/ @Entity @Table(name="product") public class Product { /** 商品コード */ @Id public Integer productCode; /** 商品名 */ public String productName; /** 価格 */ public Integer price; } クラス宣言に@Entityを付けて、 Entityであることを明記 「product」テーブルの Entityであることを明記 それぞれのカラムに対応した フィールドを宣言 フィールド宣言に「@Id」を付けて、 このフィールドがPKであることを明記 ※便宜上、フィールドをpublic宣言している。 本来、フィールドはprivateであるべき。
8.
Repositoryの実装 Productテーブルとサンプルデータ -- DDL create
table product ( product_code int(5), product_name varchar(50), price int(10), primary key ( product_code ) ); --DML insert into product values( 1, 'ガム', 100 ); insert into product values( 2, 'アメ', 120 ); insert into product values( 3, 'チョコ', 150 );
9.
Repositoryの実装 ただのクラスをRepositoryに仕立てる /** productテーブルのRepository
*/ public interface ProductRepository extends JpaRepository <Product, Integer> { } JpaRepositoryを拡張した インターフェースであることを明記 「product」テーブルの Repositoryであることを明記 PKはInteger(数値フィールド) であることを明記 JpaRepositoryには基本的なデータベース操作は宣言されていて、 カスタマイズの必要がなければ特に中身のないインターフェース宣言で良い(そんなケースは稀な気が・・・)
10.
Serviceの実装 Controllerから処理要求を受け取り、 Repositoryに対してデータの取得・更新を行う Controller Service Repository Entity Entity Entity Entity 2.ビジネスロジックを書く 5.データを返す
11.
Serviceの実装 商品関連のビジネスロジックを実行するServiceを作成 package sample.springbootweb.service.product; /**
商品関連のビジネスロジックを実行するService */ public class ProductService { } 「service」パッケージに 商品関連のパッケージ 「product」を作成
12.
Serviceの実装 ただのクラスをServiceに仕立てる /** 商品関連のビジネスロジックを実行するService
*/ @Service public class ProductService { } クラス宣言に@Serviceを付けて、 Serviceであることを明記
13.
Serviceの実装 Repositoryを呼び出す /** 商品関連のビジネスロジックを実行するService
*/ @Service public class ProductService { @Autowired ProductRepository productRepository; /** 商品一覧を返す */ public List<Product> getProductList() { List<Product> list = productRepository.findAll(); return list; } } 使用するRepositoryを宣言 Repositoryのメソッドを 呼び出してデータを取得 取得したデータを返却
14.
Controllerの実装 ブラウザからの入力値を受け取り、 Serviceへ処理要求を出し、 結果をテンプレートに渡してHTMLをレンダリングさせる Controller ブラウザ Service TemplateModel Entity Entity Model1.入力値を受け取る 6.HTMLに変換
15.
Controllerの実装 商品関連のページを制御するControllerを作成 package sample.springbootweb.app.product; /**
商品関連のページを制御するController */ public class ProductController { } 「app」パッケージに 商品関連のパッケージ 「product」を作成
16.
Controllerの実装 ただのクラスをControllerに仕立てる /** 商品関連のページを制御するController
*/ @Controller @RequestMapping("product") public class ProductController { } クラス宣言に@Controllerを 付けて、Controllerであることを明記 URL「product」に対する Controllerとして関連付ける http://someserver/someapp/product/
17.
Controllerの実装 リクエストとメソッドを関連付ける /** 商品関連のページを制御するController
*/ @Controller @RequestMapping("product") public class ProductController { /** 商品一覧を表示する */ @RequestMapping(value = "/", method=RequestMethod.GET) public String list() { return "product/list“; } } value値でURL「product」の ルート(/) Controllerとして関連付ける method値でHTTPメソッド「GET」に 関連付ける テンプレート「product/list.html」を 表示する
18.
Controllerの実装 Serviceを呼び出す /** 商品関連のページを制御するController
*/ @Controller @RequestMapping("product") public class ProductController { @Autowired private ProductService productService; /** 商品一覧を表示する */ @RequestMapping(value = "/", method=RequestMethod.GET) public String list() { return "product/list"; } } 使用するServiceを宣言
19.
Controllerの実装 Serviceを呼び出す /** 商品関連のページを制御するController
*/ @Controller @RequestMapping("product") public class ProductController { @Autowired private ProductService productService; /** 商品一覧を表示する */ @RequestMapping(value = "/", method=RequestMethod.GET) public String list(Model model) { List<Product> list = productService.getProductList(); model.addAttribute("productList", list); return "product/list"; } } 引数にModelを受け取る (ControllerとTemplateの架け橋) Serviceを呼び出す Serviceの実行結果を Modelに詰める
20.
Controllerの実装 TemplateのHTMLを記述する <!DOCTYPE HTML> <html
xmlns:th="http://www.thymeleaf.org"> <head> <title>商品一覧</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> 商品一覧 </body> </html> テンプレートエンジン「Thymeleaf」で 使用するネームスペースの宣言 src¥main¥resources¥templates¥product¥list.html
21.
Controllerの実装 テンプレートを作成する <body> 商品一覧 <table border="1"> <tr> <th
style="background-color:#CCCCCC">Code</th> <th style="background-color:#CCCCCC">商品名</th> <th style="background-color:#CCCCCC">金額</th> </tr> <tr> <td>1</td> <td>ダミー商品</td> <td>50</td> </tr> </table> </body> 素のHTMLで見た目の確認をする HTMLをブラウザで開いて見た目の確認をする (デザイナーさんの仕事)
22.
Controllerの実装 テンプレートを作成する HTMLをブラウザで開いてみる
23.
Controllerの実装 動的部分を作成する <body> 商品一覧 <table border="1"> <tr> <th
style="background-color:#CCCCCC">Code</th> <th style="background-color:#CCCCCC">商品名</th> <th style="background-color:#CCCCCC">金額</th> </tr> <tr th:each="product: ${productList}"> <td th:text="${product.productCode}">1</td> <td th:text="${product.productName}">ダミー商品</td> <td th:text="${product.price}">50</td> </tr> </table> </body> Modelに詰めたproductListを取り出し、 for-eachでループさせる Thymeleafで動的部分を実装する (エンジニアさんの仕事) 必要なEntityの要素を出力する
24.
Controllerの実装 実行する Webサーバにアクセスする http://localhost:8080/product/
25.
まとめ 各階層に応じた役割を意識し実装する Repository →
データベース操作 Service → ビジネスロジックの実装 Controller → 画面制御 テンプレートはエンジニアは触らずデザイナーに任せる 入力値チェック、セッション管理、トランザクション制御 ・・・などなど、まだ触れていないことは色々
Baixar agora