[Spring]SpringBootで簡単なWebApp作成「Hello World!」
◆はじめに
非常に簡単でシンプルなWebApp開発です。
SpringBootを利用して、ブラウザ上に「Hello World!」を表示させましょう。
というのが、本記事のざっくりとした内容です。
はい、仕様としては以上です。
なので、WebApp?ってなるかもしれませんが、
この「Hello World!」の延長線上に、
皆さんが思い浮かべるようなWebAppがあると思って、
大らかに捉えてもらえればと思います。
◆事前に用意するもの
・STS4(Spring Tool Suit4)
導入にあたって、以下の記事も書いてますので
ご参考ください。MacOSユーザーを想定して書いています。
[Spring] Spring Tool Suite (STS)の環境構築(for Mac)
◆本記事のゴール
まず、ブラウザ上から、「http://localhost:8080/demo/」 にアクセス。
すると,ブラウザ上に「Hello World!」と表示されます。
表示できたということは、今後、さまざまな
WebAppも開発していけるような開発環境のベースはできたということですね。
◆本記事で使用ツールに関して
・STS4(Spring Tool Suit4)
また、MacOS(BigSur ver 11.4)で構築しておりますが、
Windowsでも、ほとんど同じだと思います。
STS4は、過去のSTSを踏襲せずSpring Bootでの開発に適したツールです。
◆本記事のレベル感
もともとSpringには、Spring MVCがありましたが、
Spring Bootを使用することで楽に、アプリに必要な環境構築ができます。
Spring MVCだと、少々、初期設定の手順が多く初心〜中級レベルくらいになるかと思います。なので、こちらは、入門レベルくらいです。
◆Spring Bootとは?
まず、「MVCモデル」については、
こちらでは概略図だけに留めますので、別途調べていただきたいです。
Spring Bootとは
Spring Bootは、SpringでWebアプリケーションを開発するためのフレームワークです。MVCモデルの構造でWebアプリケーションを開発するのに便利です。
Spring MVCの仕組み・考え方を引き継ぎながらも、Spring MVCに比べて、最低限の選択を行うだけで一般的なアプリに必要な環境構築ができます。
ただ、便利故に、ブラックボックス化している印象はあります。
また、Spring mvcに比べると拡張性や自由度は下がるとも言えそうです。
◆Spring Bootの特徴
まず、Spring MVCで使用されるMVCは、
Front Controllerパターンというタイプに分類されます。
通常の、MVCモデルにはないFront Controllerが用意されていることが特徴です。
簡単に説明すると、ブラウザからのリクエストに対して、
まず、Front Controller(dispatcher Servlet)を用意して渡すようにすれば、
そのあと、最適なControllerは勝手に選んでくれるという仕組みです。
メリット① サーブレット(Front Controlleなど)の初期設定がほとんど不要
Spring MVCの場合、こちらのFront Controlleを使用するにあたって、
初期設定がさまざまに必要なのですが、Spring Bootの場合、自動的に行ってくれます。
初期設定には、POM.xmlなどでmavenに関する設定や、web.xmlとか
FrontController用の設定ファイルを作ったりなどの手間がかかります。
なので、もしもっと詳しく、Front Controller(dispatcher Servlet)の構成など
その辺のことが知りたい・作ってみたいという方がいらっしゃいましたら、
下記の記事もぜひ参考にどうぞ。
[Spring]SpringMVCで簡単なWebApp作成「Hello World!」
メリット② 「Fat Jar」:Tomcat(APサーバー)のインストールや設定の作業が不要
通常、サーブレットを動かすにあたって、TomcatというAP(アプリケーション)サーバーをインストールしておく必要がありますが、Spring Bootでは、STS4に、SpringBoot用に用意されているTomcatのサーバーを使用することができます。
少し込み入った話をすると、「Fat Jar」と呼ばれるもので、
ミドルウェア(TomcatやJetty)ごとアプリケーション本体を1つのアプリケーションのパッケージ(直接実行できるJar)にまとめて、ランタイムで動作させるという構成を取っています。
メリット③ 学習コストがかからない
メリットの①②から言えることなのですが、
xmlファイルの初期設定やAPサーバーに関することが不要で、
コーディングの量も少なく、設定も減りエラーも起こりにくいため、
学習やデバッグにかかる時間が少ないです。
そのことことから、spring Bootを使ってみることは、
WebApp開発の入門としていいでしょう。
◆制作(5Step)
⓪STS4の設定:アプリケーション開発のため
・WTPプラグインのインストール
STS4以外の場合は不要だと思うのですが、STS4の場合は、
「Eclipse Enterprise Java and Web Developer Tools」の
プラグインをインストールします。
理由としては、STS4の場合には従来のJakarta EE(Java EE)Webアプリケーション開発向けのWeb Tools Platform (WTP)やJSPエディタが初期ではいってません。
そのため、WTPのプラグインのインストールを行う必要があります。
プラブインのインストールは、Eclipse Marketplaceから行います。
STSのメニューから、Help > EclipseMarketplaceを選択し、Eclipse Marketplaceを開きます。
「Eclipse Enterprise Java and Web Developer Tools」を検査し、
インストールします。
インストールが完了し、
Eclipseを再起動すればプラグインの導入は完了です。
・パースペクティブの変更
STS4の右上にある、ウィンドウに+マークがついたようなアイコンを選択して、
パースペクティブの変更を行いましょう。
アイコンを選択すると、
パースペクティブの選択があこなえますので、
「Web」を選択します。
これで、STS4の画面上のレイアウトが、
WebApp開発に適したレイアウトに変更されます。
①プロジェクトの作成(Spring Initializer)
・SpringBootのプロジェクトの作成
STS4のパースペクティブが変更できましたら、
早速、プロジェクトの作成をしていきましょう。
STS4のメニューバーで、
ファイル>新規作成>その他を選択します。
ウィザードを選択から「Springスターター・プロジェクト(Spring Initializer)」を選択します。
次に、表示される画面では、
Javaのバージョンの箇所だけは「11」に変更しました。
プロジェクトの名前やグループからグループidなどの変更もできますが、
今回はデフォルトのままです。WebAppにアクセスするURLの先頭にくるコンテキストルートの名前になったりします。
よければ、
「次に」を選択します。
依存関係の設定です。
Spring Bootのバージョンは、画像と違っていても、
最初に表示されたバージョンで大丈夫です。
Web>Spring Web のみ選択して、
完了をおします。
ちなみに、このとき、Spring Webの文字の上にカーソルを置くと、
以下のような説明文が表示されます。
『Spring MVC(記事の初めの方に初めの方に少し説明あり)を使って、RESTFulなwebプロジェクトを作ります。あと、コンテナに埋め込まれたTomcat(正式名称:Apache Tomcat)を使ってください。』
って書いてます。
完了を選択すると、
プロジェクトの作成を行います。
プロジェクトが作成されたら、
STSのプロジェクトエクスプローラーに表示されます。
プロジェクトの中の構成は以下のようになっています。
ちなみに、Javaコンパイラの設定は、
プロジェクトを右クリックして、設定から確認ができますが、
以下のようになっており「JavaSE-11」になっていました。
もし違うバージョンになっていたら、
プロジェクトを作成する際にJavaのバージョンを「11」指定しましたが、
Javaコンパイラの設定に合わせて変更したほうが良いと思います。
②HTML(Hello World!)の作成
それでは、ブラウザを開いた際に、「Hello World!」と表示するために、
HTMLファイルを作成します。
それでは、
プロジェクトエクスプローラーで、「src/main/resources/static」
を右クリックし、新規から「ファイル」を選択します。
出てきたウィンドウでファイル名を「index.html」
として保存しましょう。このでファイル名で使われている、index.htmlというのは、
サーバーを立ち上げた際に、一番初めに開かれて表示されるHTMLファイルの名前として一般的によくつけられる名称です。
ファイルが作成されたら、
ファイル内に以下のように記述して、上書き保存します。
ファイルの上書き保存は、ショートカットキーで「cntrol+S」でできます。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>デモ</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
③Controllerの作成
コントローラの作成
「src/main./java」のフォルダの中に、
「com.example.demo」という名前の、黄土色の箱のようなアイコンをしたパッケージがあります。
そこに、コントローラーを作成します。
作成したcontrollerのパッケージ内に、
controllerのjavaファイルを作成します。
パッケージを右クリックして、新規から「クラス」を選択しましょう。
名前は、「demoController」に変えておきましょう。
完了を押します。
すると、WebApp上で、
Controllerとなる「demoController」がjavaファイルで作成されます。
ファイル内容は、以下のコードで更新しましょう。
コントローラーのjavaファイル内に記述したコードは以下です。
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class demoController {
@RequestMapping(value="/demo")
private String hello(){
return "/index.html";
}
}
因みに、Spring bootを使用せずに、
spring mvcで作成していく場合は、
ここで、作成するコントローラーの内容自体はそんなに変わらないのですが、
この後に、FrontController(DispatcherServlet)から、
今作成した、コントローラーが呼び出されるように、
FrontController用の設定ファイルやweb.xmlなどを作成していきます。
ですが、Spring Bootの場合は、そのような設定はせずとも、
ブラウザ上で、URLで「/demo」となっていたら、このコントローラが呼ばれて、
index.htmlが呼ばれるようになるわけですね。
④サーバーの起動
・サーバーの起動
TomcatサーバーはBootStrapでは、セットになっているため、
別途ダウンロードや細かい設定は必要ありません。
それでは早速、サーバーを起動しましょう。
まず、STSのプロジェクトエクスプローラーより上にある、
「緑色のパワーボタンのようなアイコン」を押します。
すると、STS上で「Bootダッシュボード」が開きます。
この中の、localを開いて、そのなかにある「●demo」というのが、
今回のWebAppを起動させるためのアプリケーションサーバーです。
「●demo」を右クリックし、
「(再)起動」を選択します。
すると、STSの画面下にある、
コンソール上でSpringという文字が表示されていますが、
無事にアプリケーションサーバーが起動しました。
ちなみに、localというのは、ローカルサーバーのことです。
おなじLAN上のローカルネットワークでプライベートipが割り振られているPCでローカルサーバーの立っているPCのipがわかればアクセスすることはできます。
ただ、普段使っているネットワーク上からだと、
このプライベートipには直接アクセスすることは普通はできません。
ただ、セキュリティ的には、起動して終わったらAPサーバーは停止しておくほうが良いでしょう。
⑤WebAppにブラウザからアクセス
・アクセス
サーバーが起動したら、
それではいよいよ、ウェブブラウザから、
作成したWebAppにアクセスしましょう。
ブラウザ上で、「http://localhost:8080/demo/」 にアクセス。
(demoの文字列は、コンテキストルートです。
みなさんが作成したプロジェクト名を入れて下さい。)
ブラウザ上に「Hello World!」と表示されたら成功です。
成功した場合
お疲れ様でした!
404エラーの場合
404エラーで、「Hello World!」と表示されない場合は、
サーバーは起動しています。ただ、どこか設定などに問題がありそうです。
どこかのソースコードに誤植やディレクトリ構成に違いがないか確認してみてください。
(補足)
ソースコードの箇所で、Springの処理が実際どのような流れで動作しているのか。
例えば、アノテーション(@の記号)や、今回の記事であまり触れてませんが、SpringApplication.javaのファイルのSpringApplication.runメソッドの内容などより理解したいという方は、以下のサイトを見つけました。ご覧ください。
HelloWorldアプリケーションの説明(By 神田ITスクール)
◆まとめ
以上です。
ここまでご覧いただいた方はありがとうございます。
SpringBootを利用して、ブラウザ上に「Hello World!」を表示させるという
非常に簡単でシンプルなWebApp開発についてご紹介しました。
ご興味があれば、
SpringMVCでの環境構築靄ってみて下さい。
それでは!
◆参考
[SpringでHelloWorld(by SearchMan IT技術の痒い所に手が届く)]
ありがとうございました。なので、こちもご覧いただくといいかもしれません。
[Spring MVCについて]
[12.4. STS4の設定手順]
Discussion