メールアドレスではありません。・オリジナルのバリデータを作成しました。下記のクラスは入力したデータ型を確認する機能です。input.matches("[0-9()-]*");}}下記のインターフェースは新しいアノテーションを使えるようになるものです。{};}補充:インターフェースとは、クラスに含まれるメソッドの具体的な処理内容を記述せず、変数とメソッドの型のみを定義したものです。抽象メソッドは具体的な処理内容を記述せず、メソッド名や引数などの定義だけを宣言するメソッドです。・Serializable(シリアライズ・直列化)この機能を使うと、簡単にインスタンスを外部記憶装置などに保存し、インスタンスの情報を永続化することができます。MVCでコントローラー層のクラスに付与します。以下の役割を担います。(主処理を実行します。MVCでサービス層のクラス(ビジネスロジック等)に付与します。業務処理を提供します。MVCでデータ層のクラス(DAO等のDBアクセスを行うクラス)に付与します。MVCに限らず、SpringのDIコンテナにbeanとして登録したいクラスへ付与します。@SuppressWarningコンパイル・ユニットのサブセットに関するコンパイル警告を無効にできます。未検査のオペレーションに関連する警告の抑止@PersistenceContextEntityManagerのbeanを取得してフィールドに設定します。06・Thymeleafエスケープ処理機能が内蔵しています。th:text="${msg}">message.</p></body>使いたくない場合は、utextに変わります。th:utext="${msg}">message.</p></body>・GenerationType問題点:AUTOで生成することができません。解決方法:IDENTITYに変更しました。GenerationType.AUTO)データベースごとに異なる方法を選択し,主キー値を生成します。GenerationType.IDENTITY)テーブルのidentity列を利用して,主キー値を生成します。保存したデータは、アプリケーションを終了し、再度起動すると消えてしまっています。問題点:初期化が成功しましたが、終了の時、データが残っています。解決方法:IDを指定して、データを初期化処理します。data!");repository.saveAndFlush(d1);}この解決方法はよくないと思います。DatabaseにIDは1のデータがいないなら、新しいデータを作成しまいました。データを削除するのはいけません。削除したら、上記の状況が発生します。keyを追加する場合は、重複のデータを作成すると、バグになってしまいます。・Optionalnullかもしれないオブジェクトをラップするためのクラス。05・JpaRepositorydatabaseの操作というクラスです。CrudRepositoryは、CRUD機能を提供しています。PagingAndSortingRepositoryは、ページングおよびソートレコードを行うためのメソッドを提供しています。JpaRepositoryは、永続コンテキストの更新やレコードの一括削除など、JPA関連のメソッドを提供しています。@AutowireduserRepositoryというBeanを取得することです。Springによって自動生成されます。データを処理するために使用します。th:field="*{username}"@readOnlyboolean読み取り専用かどうかを指定する。デフォルトはfalse。・Interableもらった配列の文字com.example.demo.entity.UserEntity@2d0716be問題点:配列が表示されませんでした。<----使えません。解決方法:privateがpublicに変更します。"forward:/";}}redirect:/localhost:8080/otherに遷移したら、localhost:8080/に転送します。forward:/localhost:8080/newに遷移します。action="result">actionで指定のページへ遷移します。・POSTでボタンを押すと、データを保存します。mv;}結果を保存したら、成功メッセージが表示されるページに遷移します。userJPA.save(entity);}データを保存することです。結果:passwordの保存は成功したが、user_idの保存は失敗しました。原因:まだわかりません。URLで実行したら、機能は正常です。POSTで実行するのはうまくできません。・あった状況POSTとGET同じURLに移動して、違う結果をもらいます。(値をもらう問題だと思います。)POSTはエラーページに遷移します。GETは正常な画面に遷移します。POSTで新しい画面に遷移して、GETと同じ画面に遷移します。(上記と矛盾しているんですが、実際に発生しまいました。)ChromeとEdgeは配列が表示しますが、Eclipseのブラウザはダウンロードの画面が表示されます。JSONのファイルはChromeとEdgeに表示することができると思います。この結果をもらいました。GETとPOSTの使い方は違うので、同じ移動方法を使わないほうがいいと思います。mv;}}赤い部分は、localhost:8080/user/listに遷移したら、DataBaseのデータが表示されます。action="user/result">青い部分は、POSTで値を渡して、GETの部分を実行できます。これから、POSTとGETの機能を分別します。しないと、混乱するかもしれません。03GroovyJavaと似てるプログラミング言語です。ファイルの拡張子はgroovyです。XXX.groovyを入力します。home(){"Hello!!"}}起動したら、Webブラウザでhttp://localhost:8080/にアクセスします。画面に「Hello!!」とテキストが表示されます。テンプレートエンジンです。Thymeleafの目標はJSPを完全に取って代わることです。app2.groovyMavenとGradleプロジェクト自動構築ツールです。MavenはXMLで配置します。GradleはGroovyで配置します。流れ:1.ソースコードをコンパイルします。2.単体テストと統合テストを実行します。3.スタティックコードを分析して、分析結果を生成します。4.リリースバージョンを作ります。5.ターゲット環境にデプロイします。6.配信プロセスをデプロイします。7.スモークテストおよび自動機能テストを実施します。{compile(‘org.springframework:spring-core:2.5.6’)compile(‘org.springframework:spring-beans:2.5.6’)}上記通り、MavenよりGradleのコードは短いです。今よく使うはMavenです。Mavenの利点もあります。MavenとGradleが同時に存在することができます。Githubに優秀なオープンソースは二つ依存性の注入方法が提供されています。指定のhtmlに遷移します。jstl--><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency>・JSPを利用するために、JSPのフォルダーを指定します。application.propertiesspring.mvc.view.prefix=/WEB-INF/jsp/spring.mvc.view.suffix=.jsp下記のは、もし/indexへ遷移したら、springmvcがJSPのフォルダーのindex.jspを探します。"index";}}@Controller使用者からもらったURLを対応のサービスに渡します。RequestMappingと一緒に使われています。@RequestMappingルーティング情報を提供します。・SpringBootがSpringDataJPAでCRUDを作ります。--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!--tomcat--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><!--<scope>provided</scope>--></dependency>内部のtomcatで実行する場合は、scopeを削除します。bodyに書き込みます。@RestControllerJsonやXML等を返すWebAPI用のコントローラで使用します。)下記の二つは同じ機能ですが、一つのコードは長いです。一つは短くて、理解やすいです。yaml形式の定義ファイルはpropertiesのルールより厳しいです。一つスペースも影響されています。ライブラリであり、オブジェクト指向のドメインモデルを関係データベースにマッピングするためのフレームワークを提供します。@Entityテーブルを指定します。@Tableよく@Entityと一緒に使われています。keyしかありません。