【Java】JSP準備と実行 ( Hello World!を出力するまで )

<!-- タイトル -->
# 【タイトル】JSP準備と実行

「JSP プロジェクトの作成からHello Worldを出力するまで」の手順を書きました。

## 【説明】
JavaにはJSPという技術が存在します。形式はHTMLに似ているのですが、JSPを用いることで以下のような要件に対応することが可能です。

- 画面のformから入力した値が適切か判定
- 入力値を適切な値にフォーマットして出力

現場で目にすることも多い書き方なので、まずはJSPを使うための準備から始めましょう。

## JSPを用いた開発の準備〜プロジェクト〜
eclipseを用いてJSPを使用する準備をしていきます。
まずは下準備として、JSPを用いた開発に必要なプロジェクトを作成します。
jsp・HTML・CSS・imgといったフロント資材はこの「WebContent」フォルダ内へ配置していきます。
以下の手順を踏むことで、JSPを用いた開発に必要なプロジェクトが作成されます。

1. 「パッケージ・エクスプローラー」 を右クリック→ 「新規」 ->「 プロジェクト...」 を選択
2. 「Web 」->「 動的Webプロジェクト」 を選択して 「次へ」> をクリック
3. 「プロジェクト名」、「ターゲット・ランタイム」を入力して「完了」をクリック
	 - [サーブレット]も使用する場合は、デフォルトのまま 「次へ>」
	 - 「[web.xml] デプロイメント記述子の生成」にチェックを入れ「完了」

上記手順を踏むことで、JSPを用いた開発に必要なプロジェクトが作成されます。

## JSPを用いた開発の準備〜JSPファイル〜
次に、作成したプロジェクトの中 jspファイル を作成します。
以下の手順で、「WebContent」内にJSPファイルが作成されます。

1. 「パッケージ・エクスプローラー」配下の「WebContent」フォルダを選択
2. 「新規（W）」>「その他（O）...」を選択
2. 「Web」下の「JSPファイル」を選択
3. 「ファイル名（M）」→「次へ（N）」をクリック
4. 「新規 JSPファイル（html）」を選択→「完了（F）」をクリック
   - テンプレート形式を選択する場合は上記画面で「次へ」をクリック
   - 特に形式の指定が無ければデフォルト(新規JSPファイル（html))で「完了」
   - 現場で形式の指定がある場合は、適切な形式を選択して「完了」

HTMLファイルと非常によく似ていますが、下記が作成されたソースコードです。

【作成されたJSPファイル】

```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>
```

## 【JSPの実行】 「Hello World!」を出力する
実際に作成したJSPファイルを実行します。
「Hello World!」が出力されるように記述します。

```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>Hello World!!</h1>
</body>
</html>
```

1. 「パッケージ・エクスプローラー」を選択→「実行（R）」>「サーバーで実行」をクリック
2. サーバーのタイプを選択して「次へ（N）>」をクリック
   - ※ サーバーのタイプは、動的Webプロジェクトを作成する際、ターゲット・ランタイム選択したもの(TomCat8等)と同じにする
3. 「構成済み（C）:」にプロジェクトが追加されていることを確認
4. 「完了（F）」をクリック
5. 動的Webプロジェクトが実行され、JSPファイルの内容が出力される


ブラウザ上で以下のように入力すれば、同様の画面を確認できます。
※ プロジェクトをサーバーで実行した状態からURLを叩かないと何も表示されないので注意。


```
ブラウザでURL http://localhost:8080/HTMLページやJSPページなどを指定/
```


[Progate]:https://prog-8.com/
[ドットインストール]:https://dotinstall.com/

[abstract修飾子]:https://qiita.com/takahirocook/items/9fa0e1cbb8a4dd4e1ff4
[abstract]:https://qiita.com/takahirocook/items/9fa0e1cbb8a4dd4e1ff4
[import]:https://qiita.com/takahirocook/items/59a8a09cab6a98d3bca2
[this]:https://qiita.com/takahirocook/items/d251ec4693c68f6b9538
[super]:https://qiita.com/takahirocook/items/75a07131e7e791c8442c
[final]:https://qiita.com/takahirocook/items/5e0916d9bf28bcf68d0c
[final修飾子]:https://qiita.com/takahirocook/items/5e0916d9bf28bcf68d0c
[List]:https://qiita.com/takahirocook/items/4d622fc6f271569783b5
[length]:https://qiita.com/takahirocook/items/16a123fb73b30869053b
[list]:https://qiita.com/takahirocook/items/4d622fc6f271569783b5
[Map]:https://qiita.com/takahirocook/items/49f46151ecb5e332db32
[map]:https://qiita.com/takahirocook/items/49f46151ecb5e332db32
[set]:https://qiita.com/takahirocook/items/d498329cd26e1500f476
[Set]:https://qiita.com/takahirocook/items/d498329cd26e1500f476
[Date]:https://qiita.com/takahirocook/items/a760e20ef2d9aa5c08fc
[SimpleDateFormat]:https://qiita.com/takahirocook/items/aa857c8f2153193095e4
[Time]:https://qiita.com/takahirocook/items/9caef0bb2409caedba55
[Calendar]:https://qiita.com/takahirocook/items/204dd7331db777eb6f3b
[mainメソッド]:https://qiita.com/takahirocook/items/f4635915337303de338c
[printf()メソッド]:https://qiita.com/takahirocook/items/06d525be63eccd99ed49
[printf()関数]:https://qiita.com/takahirocook/items/06d525be63eccd99ed49
[this]:https://qiita.com/takahirocook/items/d251ec4693c68f6b9538
[getter・setter]:https://qiita.com/takahirocook/items/27828bc8477735612021
[setter]:https://qiita.com/takahirocook/items/27828bc8477735612021
[getter]:https://qiita.com/takahirocook/items/27828bc8477735612021
[new演算子]:https://qiita.com/takahirocook/items/00f9f97592bf50831d39
[new]:https://qiita.com/takahirocook/items/00f9f97592bf50831d39
[static修飾子]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[static]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[web.xml]:https://qiita.com/takahirocook/items/d41a92bd36807d456f82
[GET]:https://qiita.com/takahirocook/items/8080a478439f6043b2c1
[GETメソッド]:https://qiita.com/takahirocook/items/8080a478439f6043b2c1
[getParameter()]:https://qiita.com/takahirocook/items/8080a478439f6043b2c1
[getParameter]:https://qiita.com/takahirocook/items/8080a478439f6043b2c1
[getParameterメソッド]:(https://qiita.com/takahirocook/items/8080a478439f6043b2c1)
[getParameterValues]:https://qiita.com/takahirocook/items/7a071493ae73cc4749e1
[getParameterValuesメソッド]:https://qiita.com/takahirocook/items/7a071493ae73cc4749e1
[POST]:https://qiita.com/takahirocook/items/7a071493ae73cc4749e1
[POSTメソッド]:https://qiita.com/takahirocook/items/7a071493ae73cc4749e1

<!-- あ行 -->
[オブジェクト指向]:https://qiita.com/takahirocook/items/041ba7a096b71ab8ffd4
[継承]:https://qiita.com/takahirocook/items/6c84ea66a6e2ad536a37
[オーバーライド]:https://qiita.com/takahirocook/items/09dd8e5f56d6617ce45a
[オーバーロード]:https://qiita.com/takahirocook/items/b937c3c07126fe7e02a4
[インスタンス]:https://qiita.com/takahirocook/items/ec01cdcbb440cf0d1cc4
[インスタンス化]:https://qiita.com/takahirocook/items/ec01cdcbb440cf0d1cc4
[アクセス修飾子]:https://qiita.com/takahirocook/items/e51b0b9d37d95ad587fe
[インスタンス化]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[インスタンス変数]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[インターフェイス]:https://qiita.com/takahirocook/items/ca84be8dfef664b19194
[インターフェース]:https://qiita.com/takahirocook/items/ca84be8dfef664b19194
[インポート]:https://qiita.com/takahirocook/items/59a8a09cab6a98d3bca2
[インデックス]:https://qiita.com/takahirocook/items/16a123fb73b30869053b
<!-- か行 -->
[拡張for文]:https://qiita.com/takahirocook/items/470b2858de1a4f99b334
[クラスメソッド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[クラスフィールド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[クラス変数]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[カプセル化]:https://qiita.com/takahirocook/items/e469a7c0539a0012868e
[クラス]:https://qiita.com/takahirocook/items/50cbbdca8e21539170e9
[コンストラクタ]:https://qiita.com/takahirocook/items/fa1822f2f22c3786593e
<!-- さ行 -->
[サーブレット]:https://qiita.com/takahirocook/items/1ee780d68fd859e43daf
[書式指定子]:https://qiita.com/takahirocook/items/06d525be63eccd99ed49
[静的メソッド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[静的変数]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[静的メソッド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
[スーパークラス]:https://qiita.com/takahirocook/items/75a07131e7e791c8442c
<!-- た行 -->
[定数]:https://qiita.com/takahirocook/items/5e0916d9bf28bcf68d0c
[抽象クラス]:https://qiita.com/takahirocook/items/9fa0e1cbb8a4dd4e1ff4
[抽象メソッド]:https://qiita.com/takahirocook/items/9fa0e1cbb8a4dd4e1ff4
[動的メソッド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
<!-- な行 -->
[日時の文字列操作]:https://qiita.com/takahirocook/items/aa857c8f2153193095e4

<!-- は行 -->
[パッケージ]:https://qiita.com/takahirocook/items/39b58d17abcb159ef5c1
[引数]:https://qiita.com/takahirocook/items/5e5b0ba79e869f4a592e
[配列]:https://qiita.com/takahirocook/items/16a123fb73b30869053b
[配列操作]:https://qiita.com/takahirocook/items/16a123fb73b30869053b
[日付操作]:https://qiita.com/takahirocook/items/9caef0bb2409caedba55
[フィールド]:https://qiita.com/takahirocook/items/28df75a133049a74ece1
[フィールド変数]:https://qiita.com/takahirocook/items/28df75a133049a74ece1
[インスタンスフィールド]:https://qiita.com/takahirocook/items/cf527f85d17a5af86735
<!-- ま行 -->
[戻り値]:https://qiita.com/takahirocook/items/3b6fa670a1d6dd4a9386
[メソッド]:https://qiita.com/takahirocook/items/5bfe43576d87a2a4006c
[メソッドの呼び出し]:https://qiita.com/takahirocook/items/f4635915337303de338c
<!-- や行 -->
<!-- ら行 -->
<!-- わ行 -->