「[[.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