使用Spring Boot 3创建网页_Groovy模板
首先
“Groovy Templates”是一种模板引擎。
首先参考文献
请原生地用中文进行释义,只需要给一个选项:
https://www.shuwasystem.co.jp/book/9784798069166.html
以下是提供的释义选项:
https://www.shuwasystem.co.jp/book/9784798069166.html 可提供的含义连接为:
环境
-
- 開発環境:Eclipse 2022-12 (4.26.0)
-
- Java 17.0.5
-
- フレームワーク:SpringBoot 3.1.0
- ビルドツール:gradle
预备
or
准备
创建一个新项目
Gradle
-
- 「spring-boot-starter-groovy-templates」・・・Groovy templatesテンプレートエンジン
-
- 「spring-boot-starter-web」・・・Webパッケージ
-
- 「spring-boot-starter-data-jpa」・・・DBアクセスするために必要
- 「spring-boot-starter-test」・・・コードテストするために必要
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.1.2'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-groovy-templates'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
配置文件(Groovy的配置)
-
- 「cache=false」・・・キャッシュOFF
- 「suffix=.tpl」・・・ビュー名に追加される拡張子はtpl
spring.groovy.template.cache=false
spring.groovy.template.suffix=.tpl
应用程序类(保持自动生成的状态)
package com.example.groovy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GroovyStudyApplication {
public static void main(String[] args) {
SpringApplication.run(GroovyStudyApplication.class, args);
}
}
桌子
package com.example.groovy;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name="account")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private long id;
@Column(length = 50, nullable = false)
private String name;
@Column(length = 200, nullable = true)
private String mail;
public Account() {
}
public Account(String name, String mail) {
this.name = name;
this.mail = mail;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public String getMail() {
return mail;
}
}
package com.example.groovy.repositories;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.groovy.Account;
@Repository
public interface AccountRepository extends JpaRepository<Account, Long> {
}
控制器类
initメソッドインスタンス生成後に呼び出される(PostConstructアノテーションによって)
Accountテーブルにデータ投入しているgetDataメソッドGET /getData アクセス時に呼び出される
mav.setViewName(“getData”);で画面表示に使うテンプレートを指定(getData.tpl)
Accountテーブルにデータ投入しているgetDataメソッドGET /getData アクセス時に呼び出される
mav.setViewName(“getData”);で画面表示に使うテンプレートを指定(getData.tpl)
package com.example.groovy.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.servlet.ModelAndView;
import com.example.groovy.Account;
import com.example.groovy.repositories.AccountRepository;
import jakarta.annotation.PostConstruct;
@Controller
public class IndexController {
@Autowired
AccountRepository repository;
@PostConstruct
public void init() {
List<Account> accountList = new ArrayList<>();
accountList.add(new Account("ichiro", "example1@example.com"));
accountList.add(new Account("jiro", "example2@example.com"));
accountList.add(new Account("saburo", "example3@example.com"));
repository.saveAllAndFlush(accountList);
}
@GetMapping("/getData")
public ModelAndView getData(@ModelAttribute("formModel") Account account, ModelAndView mav) {
mav.setViewName("getData");
mav.addObject("title", "タイトル表示");
mav.addObject("message", "メッセージ表示");
mav.addObject("flag1", true);
mav.addObject("flag2", false);
Iterable<Account> list = repository.findAll();
mav.addObject("data", list);
return mav;
}
}
模板
yieldUnescaped '<!DOCTYPE html>'
html(lang:'ja') {
head {
meta(charset:"UTF-8")
title("繰り返し")
link(rel:"stylesheet", type:"text/css",
href:"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css")
}
body(class:"container"){
h1(class:"display-4 mb-4", title)
p(message)
div (class:"alert alert-primary") {
if (flag1) {
p("flag1がtrueの時に出力されるよ")
} else {
p("flag1がfalseだったら出力")
}
if (flag2) {
p("flag2がtrueの時に出力されるよ")
} else {
p("flag2がfalseだったら出力")
}
}
div (class:"card") {
div (class:"card-body") {
h3(class:"card-title", "アカウント一覧")
data.each {
p(class:"card-text", it.id + "/" + it.name + "/" + it.mail)
}
}
}
}
}
点击右键运行项目,选择”运行”,然后选择”Spring Boot”应用程序。