この資料は、「エンタープライズ開発入門」シリーズの最終部です。以前の記事:
Spring-MVC を例として使用して、MVC 実装の最も単純な例を見てみましょう。これを行うには、spring-boot で小さな Hello World アプリケーションを作成しましょう。すべてを自分で繰り返すことができるように、段階的な手順を説明します。まず小さなアプリケーションを作成し、それからそれを分析します。
ステップ 1: IntelliJ IDEA でスプリングブート アプリケーションを作成する
[ファイル] -> [新規] -> [プロジェクト] を使用して、新しいプロジェクトを作成します。開いたウィンドウの左側のメニューで、「Spring Initializr」を選択し、「Project SDK」を選択して、「Initializr Service URL」オプションをデフォルトのままにします。
「次へ」ボタンをクリックします。次のウィンドウでは、プロジェクトパラメータを選択する必要があります。Maven プロジェクトを作成します。[タイプ] - [Maven プロジェクト] を選択し、グループとアーティファクトを入力して
、[次へ] をクリックします。次のウィンドウでは、使用する Spring Framework コンポーネントを選択する必要があります。必要なのは次の 2 つだけです。
- Spring Web は、Web アプリケーションの作成を可能にするコンポーネントです。このコンポーネントには Spring MVC が含まれています。
- Thymeleaf - いわゆるテンプレート エンジン。Java から HTML ページにデータを転送できるようにするもの
次のウィンドウで、ファイル システム内のプロジェクトの名前と場所を選択します。
[完了] ボタンをクリックします。プロジェクトが作成されました。次のプロジェクト構造があります。
ここでは 2 つのファイルに興味があります: pom.xml - デプロイメント記述子。これは、さまざまなフレームワークからプロジェクトにライブラリを迅速かつ簡単にインポートできるようにするものであり、アプリケーションのアセンブリを構成するものでもあります。私たちのアプリケーションは Maven を使用して構築されており、pom.xml はこのビルド システムの構成ファイルです。Java クラス - MvcDemoApplication。これはアプリケーションのメインクラスであり、そこから Spring-Boot プロジェクトを起動します。まず、このクラスの main メソッドを実行するだけです。このクラスのコードと pom.xml ファイルは次のとおりです。 MvcDemoApplication:
@SpringBootApplication
public class MvcDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MvcDemoApplication.class, args);
}
}
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.javarush</groupId>
<artifactId>mvc_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mvc_demo</name>
<description>Spring MVC Demo</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
ステップ 2. Web ページを作成する
私たちのアプリケーションは非常にシンプルになります。メイン ページ (index.html) があり、その中にウェルカム ページ (greeting.html) へのリンクがあります。挨拶ページでは挨拶を表示します。URL パラメーターを使用して、挨拶名をgreeting.html ページに送信する機能を実装しましょう。アプリケーションのメイン ページ、index.html を作成しましょう。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Main page</title>
</head>
<body>
<p>Get your greeting <a href="/greeting">here</a></p>
</body>
</html>
次に、greeting.html ページを作成しましょう。
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
ここでは、非典型的な HTML ページからタグを見ることができます。 タグ
<p th:text="'Hello, ' + ${name} + '!'" />
属性は、Thymeleaf テンプレート エンジンのツールです。そのおかげで、タグの値はテキスト「Hello,」 + Java コードから設定する 変数の値になります。
th
p
p
name
ステップ 3: コントローラーを作成する
mvc_demo パッケージ内にコントローラー パッケージを作成し、その中にコントローラーである HelloWorldController を作成します。
@Controller
public class HelloWorldController {
@RequestMapping(value = "/greeting")
public String helloWorldController(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
コードが非常に少ない一方で、多くのことが行われています。分析を始めましょう。@Controller アノテーションは、このクラスがコントローラーであることを示します。Spring のコントローラーは、特定のアドレスへの HTTP リクエストを処理します。このクラスには helloWorldController メソッドがあり、アノテーション @RequestMapping(value = "/greeting") でマークされています。このアノテーションは、このメソッドが /greeting アドレスへの HTTP GET リクエストを処理することを示しています。つまり、この方法は、誰かが /greeting にアクセスした場合に機能します。このメソッドは文字列を返します。Spring-MVC によれば、コントローラー メソッドはビューの名前を返す必要があります。次に、Spring は同じ名前の HTML ファイルを探します。このファイルは、HTTP リクエストへの応答として返されます。ご覧のとおり、このメソッドは以前に作成した Web ページの名前 (greeting) を返します。私たちのメソッドは 2 つの引数を取ります。それらを見てみましょう: パラメータ 1: @RequestParam(name = "name", required = false,defaultValue = "World") 文字列名。@RequestParam アノテーションは、String name パラメータが URL パラメータであることを示します。注釈の括弧は、URL 内のこのパラメータがオプション (必須 = false) であることを示します。このパラメータが存在しない場合、文字列名パラメータの値は World (defaultValue = "World") になり、存在する場合はこのパラメータが使用されます。 URL 内の は name (name = "name") と呼ばれます。ここでは不明な点がたくさんあるかもしれません。例を挙げてみましょう。以下の表は、/greeting アドレスにアクセスするためのさまざまなオプション (URL にパラメーターがある場合とない場合) における String name パラメーターの値を示しています。
URLの例 |
文字列名のパラメータ値 |
/挨拶 |
世界 |
/greeting?name=アミーゴ |
アミーゴ |
/greeting?name=ゾール |
ゾール |
パラメーター 2: 2 番目のパラメーターは Model モデルです。このパラメータはモデルです。このモデルは内部的にさまざまな属性で構成されています。各属性には名前と値があります。キーと値のペアのようなもの。このパラメータを使用すると、Java コードから HTML ページにデータを転送できます。または、MVC 用語では、モデルからビューにデータを転送します。最後の行の解析が残っています。Java から HTML に、またはモデルからビューにデータを渡す方法。メソッドの本体には次の行が含まれています。
model.addAttribute("name", name);
ここでは、name という新しい属性を作成し、それに name パラメーターの値を割り当てます。思い出してください。つい最近、タグについて議論しました
<p th:text="'Hello, ' + ${name} + '!'" />
。p タグの値は、テキスト「Hello,」 + Java コードから設定する name 変数の値になると言いました。次の行を使用してこの値を設定します
model.addAttribute("name", name);
ステップ 5. 起動
起動するには、MvcDemoApplication クラスの main メソッドを実行する必要があります。
起動ログでは、Web アプリケーションがポート 8080 で開始されたことがわかります。
これは、ブラウザで次のページに移動できることを意味します:
http:// localhost:8080 :
ここでは、index.html ページが表示されました。挨拶へのリンクをたどってみましょう:
この移行中、コントローラーは機能しました。URL を通じてパラメータを渡さなかったため、注釈に記載されているように、name 属性の値はデフォルト値 World になりました。次に、URL 経由でパラメータを渡してみます。
すべてが意図したとおりに機能します。ここで、name 変数のパスをトレースしてみます。
- ユーザーはパラメーター名 = Amigo の値を URL 経由で渡しました
- コントローラーはアクションを処理し、name 変数を受け入れ、名前 name と受け入れられた値を使用してモデル属性を設定しました ->
- このデータはモデルからビュー、greeting.html ページに移動し、ユーザーに表示されました。
それだけです!
今日は、MVC (モデル - ビュー - コントローラー) のかなり大きくて興味深いトピックを紹介しました。このシリーズはこれで終了です。エンタープライズ開発を始める前に知っておくべきことを紹介するのが目的です。
興味のあるトピックをコメントに残してください。必ず対応します。 |
GO TO FULL VERSION