Spring Bootとは、Helloworldを表示する、GETの値を表示する、(基本情報）ユーザ認証とアクセス管理、コンピュータウィルスの脅威


#環境(Spring Boot)
　OS：Windows10
　framework：spring boot
　言語：java11

#Spring Bootとは
　Spring BootはSpringFrameworkの上に構築されたフレームワークです。
　SpringアプリケーションをXMLの設定なしで作成できる。


#Spring Bootで「HelloWorld」を表示する
　手順
　1.ファイル構成
　　![課題1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/686519/8aeb655b-dc7d-8a67-28c7-b79e2c5167d3.png)

　2.Spring Bootアプリケーションの作成 STS4を起動する
　　メニューの左上から「ファイル」>「新規」>「その他」>「Springスターター・プロジェクト」を選択
　　その後依存関係で以下を選択して、「完了」ボタンを押下
　　　・Spring Boot DevTools(開発ツール)
 　　　　Spring Bootの開発ツールです。自動再起動など、開発に便利なツールが含まれている
　　　・Thymeleaf(タイムリーフ)
　　　　SpringBootで標準的に使われるHTMLテンプレートエンジン
　　　・Spring Web
　　　　Webアプリケーションが作れるようになる。

　3.コントローラを作成
　　Com.example.demoで右クリック>「新規」>「クラス」を選択後以下のソースを記載
　
　　今回のソースは、引数にルート("/")を指定しているのでhttp://localhost:8080/でアクセス可能になる
　　また、returnの文字列には、"hello"を記載したので、これでtemplatesフォルダの(hello.html)を呼び出せる

```
　　　　package com.example.demo.trySpring;
　　　　import org.springframework.stereotype.Controller;
　　　　import org.springframework.web.bind.annotation.RequestMapping;
　　　　@Controller
　　　　public class HelloController {
　　　　　@RequestMapping("/")
　　　　　public String index() {
　　　　　　return"hello"
　　　　　}
　　}
```
　　@controller 
　　　このクラスがコントローラであることを示す
　　@RequestMapping
　　　HTTPリクエストを受け付ける。

　　4.Thymeleafテンプレートを作成
　　　[templates]で右クリック>「新規」>「その他」を選択後HTMLファイルを選択して「次へ」を押す
　　　ファイル名を「hello.html」していして完了を押下
　　hello.htmlを以下のように編集する。

```html
    <!DOCTYPE html>
　   <html xmlns:th="http://www.thymeleaf.org">
　   <head>
　　  <meta charset="UTF-8">
　　  <title>Hello World</title>
　   </head>
　   <body>
　　   <h2>Hello World</h2>
　   </body>
    </html>
```
　5.実行ボタンを押してhttp://localhost:8080/にアクセスする
　　実行ボタン押下後「http://localhost:8080/」アクセスし以下の通りに表示されているか確認
　　![課題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/686519/7328f830-923f-2583-9589-63e70272df8d.png)
　　
#GETの値を表示する
　ここでは、以下のことをします
　1.コントローラでGETの値を取得する
　2.Thymeleafで、GETの値を表示する
　
#依存関係は以下を選択します。
　・Spring Boot DevTools
　・Thymeleaf
　・Spring Web

#コントローラ作成
　クラス作成後以下のソースを記載します。
　@GetMapping
　　HTTPのGETリクエストを受け付ける
　greeting()メソッドは以下のように実装
　　public String greeting(@RequestParam("message")String message,Model model)
　@RequstParam
　 リクエストの値(パラメータ)を取得できる
　　取得した値をThymeleafに渡すには、Modelへ追加する。これにはModelクラスの
　　addAttribute("名前",値)を使用する
```
package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController {

	@GetMapping("/")
	public String greeting() {
		return"hello";
		
	}
	@GetMapping("/greeting")
	public String greeting(@RequestParam("message")String message,Model model) {
		model.addAttribute("sample",message);
		return "hello";
	}
	
}
```
#Thymeeafテンプレート作成
　htmlファイル作成後以下の通りに記載します。
　Thymeleafは、HTMLに「th:属性」をつけて利用する。
　　th:text
　　コントローラで追加した値をth:textで表示できる。
　　名前の指定は、${変数名}とする。

```
<!DOCTYPE html>
　　<html xmlns:th="http://www.thymeleaf.org">
　　　<head>
　　　　<meta charset="UTF-8">
　　　　<title>Hello World</title>
　　　</head>
　　　<body>
 　　　<h2>helloWorld2</h2>
 　　　<p th:text="${sample}"></p>
　　　</body>
　</html>
```

#Spring Bootアプリケーションを起動
　ブラウザでhttp://localhost:8080/greeting?message=welcomeにアクセスすると以下の画面が表示される
　　![課題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/686519/8c71f240-3ce7-8fba-3936-ac333a03554c.png)


#ユーザ認証とアクセス管理(基本情報)
　社内のコンピュータシステムを適切な権限に応じて利用できるようにしたり、システムを利用する権限がない人は
　一切アクセスできないようにすることを**ユーザ認証**という
　ユーザ認証をパスしてシステムを利用可能状態にすることを**ログイン**、システムの利用を終了してログイン状態を打ち切ることを
　**ログアウト**と呼ぶ
　
#ユーザ認証の手法
　手法以下のやり方がある

　1.ユーザIDとパスワードによる認証
　　ユーザIDとパスワードの組み合わせを使って個人を識別する認証方法
　　基本的にユーザIDは隠された情報ではないので、パスワードが漏洩しないように扱いには注意が必要

　2.バイオメトリクス認証(生体認証)
　　指紋や音紋、虹彩などの身体的特徴を使って個人を識別する方法

　3.ワンタイムパスワード
　　一度限り有効という使い捨てのパスワードを用いる認証方法トークンと呼ばれるワンタイムパスワード
　　生成器を使う形が一般的

　4.コールバック
　　遠隔からサーバへ接続する場合などにいったんアクセスした後で回線切、逆にサーバ側からコールバック
　　させることで、アクセス兼を確認する認証法

#アクセス権の設定
　アクセス権には「読み取り」「修正」「追加」「削除」などがある
　これらをファイルやディレクトリに対してユーザごとに指定していく

#ソーシャルエンジニアリングとは
　コンピュータシステムとは関係ないところで、人の心理的不注意をついて
　情報資産を盗みだす行為。これを**ソーシャルエンジニアリング**と呼ぶ

#コンピュータウイルスの脅威
　第３社のデータなどに対して、意図的に被害を及ぼすよう作られたプログラムのことを
　コンピュータウィルスと呼ぶ主に自己電線機能や潜伏機能、発病機能などをどれかひとつを有すれば
　コンピュータウイルスであるとしている
#コンピュータウイルスの種類
　コンピュータウイルスは次のような種類がある。
　　・狭義のウイルス
　　　他のプログラムに規制して、その機能を利用する形で発病するもの
　　・マクロウイルス
　　　アプリケーションソフトの持つマクロ機能を悪用したもので、ワープロソフトや表計算ソフトのデータファイルに
　　　寄生して感染を広げる
　　・ワーム
　　　自立単独で複製を生成しながら、ネットワークなどを介してコンピュータ間に感染を広めるもの
　　・トロイの木馬
　　　有用なプログラムであるように見せかけてユーザに実行をうながし、その裏で不正な処理を子なうもの

#ウイルス対策ソフトと定義ファイル
　コンピュータウイルスに対して効力を発揮するのが**ウイルス対策ソフト**
  このソフトウエアはコンピュータに入ってきたデータを最初にスキャンしてデータに問題がないか確認する。
　ウイルス対策ソフトが、多種多様なウイルスを検出するためには、既知ウイルスの特徴を記憶した++ウイルス定義ファイル(シグネチャファイル)**
　を使ってウイルスを発見している。


#以上