「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>Java]]

*目次 [#d71491ce]
#contents

*概要 [#k8daa9b3]
OAuth2、OIDCのID Federation(連携)コードを書くために、
-Javaの開発環境を構築して
-Spring MVCをチョロっと書いてみる。

ASP.NET MVCが解っていれば、それほど難しくないと思う。

*開発環境の構築 [#rce28b20]
イントラ・プロシキ環境下で無い。
-イントラ・プロシキ環境下で無い。
-32bitと64bitがあるので揃えること。

**ダウンロードとインストール [#c4c19332]
32bitと64bitがあるので揃えること。

***JDK [#g063eb59]
**JDK [#g063eb59]
2018年9月より[[Oracke Javaは有償>Java有償化について調べてみた。]]となったため、~
同等の機能を持つAdopt Open JDKをインストール

-[[Java8のLTS版で、hotspotを選択する。>Java有償化について調べてみた。#f6e5c5ab]]

***[[Eclipse]] [#e4292689]
**[[Eclipse]] [#e4292689]

***STS(Spring Tool Suite) [#a60448a4]
**STS(Spring Tool Suite) [#a60448a4]
-この手順では、Eclipseの[Menu]の[Help] -> [Eclipse MarketPlace]からインストールする。
-表示されたダイアログのFindに「STS」と入力し、STS(Spring Tool Suite)を表示する。
-Installボタンを押下してインストールする。
--すべての機能をインストールする。
--ライセンス条項に同意する。

#ref(INS_STS.png,left,nowrap,STSのInstall,60%)

-最後にEclipseを再起動する。
-なお、起動後に、推奨されるビュー(Perspective)を、[Menu]の[Window]から、
--[Perspective] -> [Open Perspective] -> [Java]
--[Perspective] -> [Open Perspective] -> [Other...] -> [Spring]

>と、選択すると使用し易い。

*プロジェクトの開発 [#p37ad8ad]

**プロジェクトの作成 [#td4b6575]
-Eclipseの[Menu]の[File] -> [New] -> [Project]を選択する。
-表示されたdialogで[Spring Boot] -> [Spring Starter Project]を選択し[Next]を押下する。
-NameとPackageを適当にリネーム(demoらかtest1などに変更する)し[Next]を押下する。
-必要な依存関係を追加(Web、Securityを追加)し[Finish]を押下する。

-Project Explorerに移動してapplication.propertiesの設定を行う。
--port番号8080を他が使用している場合、port番号8090などに変更する。
 server.port = 8090
--Spring SecurityではデフォルトでBasic認証がかかるので、アカウントを設定する。
 security.user.name=hoge
 security.user.password=hoge

**プロジェクトの実行 [#xc26033c]
-Project Explorerでプロジェクトを選択した状態で、
-[Menu]の[Run] -> [Run as] -> [Spring Boot App]を選択する。
-プロジェクトが起動したら、http://localhost:8090/にアクセスする。
-基本認証を要求されたら、hoge:hogeを入力する。
-以下の画面(404)が返ったら、ひとまず、プロジェクトは実行できたことになる。

#ref(RunAsSpringBootApp.png,left,nowrap,RunAsSpringBootApp,60%)

**プロジェクトの実装 [#b4160c9b]
***テンプレート・エンジンの参照を追加する。 [#jb331ba9]
-pom.xml(Apache Maven≒NuGetの設定ファイル)を~
ダブルクリックして開き、Dependenciesタグの各属性に入力してOKを押下する。
 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
 </dependency>

-なお、parentにdefaultバージョンの設定がない場合は、~
dependencyの中に、versionを設定する必要がある。

***コントローラーを作成する。 [#jf28b37b]
-Project ExplorerでApp.java(Test1Application.java)を右クリックし、
-[New] -> [Class]を選択し、表示されたdialogの[Name]に「HeloController」と入力し[Finish]を押下する。
-HeloControllerクラスが生成されるので以下のように修正する。
--@Controllerというアノテーションを付与する。
--indexメソッドを定義して、
---RequestMappingアノテーションを追加してRoutingを設定する。
---@PathVariable、@RequestParamで、Requestと引数とのBindingを定義する。
---ビューに対する引数になるModelAndViewを定義する(outパラメタ)。
 package com.example.test1;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.ModelAndView;
 
 @Controller
 public class HeloController {
 	
 	@RequestMapping(value="/", method=RequestMethod.GET)
 	public ModelAndView index(ModelAndView mav) {
 		mav.setViewName("index");
 		mav.addObject("msg","お名前を書いて送信してください。");
 		return mav;
 	}
 	
 	@RequestMapping(value="/", method=RequestMethod.POST)
 	public ModelAndView send(@RequestParam("text1")String str, ModelAndView mav) {
 		mav.addObject("msg","こんにちは、" + str + "さん!");
 		mav.addObject("value",str);
 		mav.setViewName("index");
 		return mav;
 	}
 }

***テンプレート(ビュー的なモノ)を作成する。 [#zbf21255]
-Project Explorerで[\test1\src\main\resources\templates]を右クリックし、
-[New] -> [Other...]を選択し、表示されたdialogの[Web] -> [HTML File]を選択し[Next]を押下する。
-表示されたdialogの[File name]に「index.html」と入力し[Next]を押下する。
-最後に、[New HTML File (5)] を選択し、[Finish]を押下する。
-生成されたファイルを以下のように修正し、Modelの値を表示する。
 <!DOCTYPE HTML>
 <html xmlns:th="http://www.thymeleaf.org">
 <head>
 	<title>top page</title>
 	<meta http-equiv="Content-Type" 
 		content="text/html; charset=UTF-8" />
 	<style>
 	h1 { font-size:18pt; font-weight:bold; color:gray; }
 	body { font-size:13pt; color:gray; margin:5px 25px; }
 	</style>
 </head>
 <body>
 	<h1>Helo page</h1>
 	<p th:text="${msg}">please wait...</p>
 	<form method="post" action="/">
 		<input type="text" name="text1" th:value="${value}" />
 		<input type="submit" value="Click" />
 	</form>
 </body>
 </html>

**Spring MVCを実行する。 [#t4f740c6]
***実行 [#haf00f2b]
-Project Explorerでプロジェクトを選択した状態で、[Menu]の[Run]を選択する。~
(二回目以降は[Run As]ではなく[Run]を押下する。)
-プロジェクトが起動したら、「http://localhost:8090/」にアクセスする。
-以下の画面が返ったら、Spring MVCは実行できたことになる。

#ref(RunAsSpringMVC.png,left,nowrap,RunAsSpringMVC,60%)

***Debug実行 [#md5f77fa]
Debug実行をする場合は、
-必要に応じてブレークポイントを設定した後、
-[Menu]の[Debug]を押下してDebug実行を開始する。

**その他のトピック [#h6464102]
***名前空間の追加 [#ka095794]
-赤波線が表示された場合、赤波線にフォーカスしてimportが表示されたらそれを選択。
-名前空間をインポートできない場合はpom.xmlに依存関係を追加する。
--groupId(必須)
--artifactId(必須)
--version(推奨バージョンがない場合に必須)

***例外 [#v2c2e7f5]
-チェックされた例外(throws キーワード)
-

***・・・ [#efa08f3b]

*参考 [#sebddf00]

**Java 開発者のための C# プログラミング言語 [#u518c997]
https://msdn.microsoft.com/ja-jp/library/ms228602.aspx

***概要 [#m76ac717]
https://msdn.microsoft.com/ja-jp/library/ms228361.aspx

***ソース ファイルの名前付け規則 [#p899caba]
https://msdn.microsoft.com/ja-jp/library/ms228500.aspx

***データ型 [#qa2b53a8]
https://msdn.microsoft.com/ja-jp/library/ms228360.aspx

***演算子 [#pfc89085]
https://msdn.microsoft.com/ja-jp/library/ms228601.aspx

***配列 [#l6a564de]
https://msdn.microsoft.com/ja-jp/library/ms228389.aspx

***構造体 [#wc9e55dd]
https://msdn.microsoft.com/ja-jp/library/ms228600.aspx

***例外 [#a5f00210]
https://msdn.microsoft.com/ja-jp/library/ms228505.aspx


***フロー制御 [#a2b63e32]
https://msdn.microsoft.com/ja-jp/library/ms228393.aspx

***ループ ステートメント [#b4e1fe76]
https://msdn.microsoft.com/ja-jp/library/ms228598.aspx

***Main () およびその他のメソッド [#i41dd547]
https://msdn.microsoft.com/ja-jp/library/ms228506.aspx

***不特定の数のパラメータの使用 [#k114635d]
https://msdn.microsoft.com/ja-jp/library/ms228391.aspx

***クラスの基本事項 [#w22070be]
https://msdn.microsoft.com/ja-jp/library/ms228632.aspx

***プロパティ [#w0be3350]
https://msdn.microsoft.com/ja-jp/library/ms228386.aspx

***継承と派生クラス [#b411706c]
https://msdn.microsoft.com/ja-jp/library/ms228387.aspx

***イベント [#p8bcb00c]
https://msdn.microsoft.com/ja-jp/library/ms228499.aspx

***演算子のオーバーロード [#a1ee5ee5]
https://msdn.microsoft.com/ja-jp/library/ms228498.aspx

***C# の高度な手法 [#y254c8b5]
https://msdn.microsoft.com/ja-jp/library/ms228395.aspx

***ガベージ コレクション [#w22da3e1]
https://msdn.microsoft.com/ja-jp/library/ms228629.aspx

***安全なコードと安全でないコード [#z8150d11]
https://msdn.microsoft.com/ja-jp/library/ms228628.aspx

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS