プロジェクト作成
https://start.spring.io/ で Gradle Project を生成します。
- Project: Gradle Project
- Language: Java
- Spring Boot: 2.5.5
- Project Metadata
- Group: com.example
- Artifact: demo
- Name: demo
- Description: Demo project for Spring Boot
- Package name: com.example.demo
- Packaging: War
- Java: 11
- Dependencies:
- Spring Web
- Thymeleaf
構成
- controller ディレクトリを作成します。
- Controller クラスをここに作成します。
- repository ディレクトリを作成します。
- DB を操作するクラスをここに作成します。
- service ディレクトリを作成する
- ビジネスロジックを実装するクラスをここに作成します。
- resources/templates に html を作成します。
.
├── HELP.md
├── build
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ ├── DemoApplication.java
│ │ ├── ServletInitializer.java
│ │ ├── controller
│ │ │ └── HelloController.java
│ │ ├── repository
│ │ └── service
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
│ └── hello.html
└── test
└── java
└── com
└── example
└── demo
└── DemoApplicationTests.java
build.gradle
Gradle のビルド設定ファイルです。
plugins {
id 'org.springframework.boot' version '2.5.6'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
ソースコード
HelloController.java
- /hello でリクエストを受け付けます。
- model#addAttribute() で Controller から View にパラメータを渡すことが出来ます。
- @RequestParam でクエリストリングからパラメータを受け取ることが出来ます。
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("/hello")
public String greeting(@RequestParam(name="name", required = false, defaultValue = "World") String name, Model model) {
model.addAttribute("name", name);
return "hello";
}
}
hello.html
- Controller で model にセットされたパラメータを画面に表示します。
<!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>
Spring Boot 起動
- ターミナルで
gradle bootRun
を実行することで Spring Boot が起動します。
> gradle bootRun
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.5.6)
2021-11-10 19:11:25.665 INFO 7516 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 11.0.11 on mtakeda-win with PID 7516 (D:\project\nexs\enurse\wiki\research\springmvc\src\springmvcsample\build\classes\java\main started by mtakeda in D:\project\nexs\enurse\wiki\research\springmvc\src\springmvcsample)
2021-11-10 19:11:25.674 INFO 7516 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default
2021-11-10 19:11:26.818 INFO 7516 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-11-10 19:11:26.824 INFO 7516 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-11-10 19:11:26.824 INFO 7516 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.54]
2021-11-10 19:11:26.874 INFO 7516 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-11-10 19:11:26.874 INFO 7516 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1151 ms
2021-11-10 19:11:27.082 INFO 7516 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2021-11-10 19:11:27.099 INFO 7516 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 1.792 seconds (JVM running for 2.125)
2021-11-10 19:11:31.133 INFO 7516 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-11-10 19:11:31.133 INFO 7516 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2021-11-10 19:11:31.133 INFO 7516 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
<==========---> 80% EXECUTING [8m 49s]
> :bootRun
この状態で http://localhost:8080/hello に Web ブラウザでアクセスすると以下の画面が表示されます。
http://localhost:8080/hello?name=SpringMVC とすると画面にクエリストリングで指定したパラメータが表示されます。