From abf29969809eba70b88fcf2c4e38ba0df10029db Mon Sep 17 00:00:00 2001
From: "Yangkai.Shen" <237497819@qq.com>
Date: Wed, 10 Oct 2018 10:20:54 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20spring-boot-demo-template-thymelea?=
=?UTF-8?q?f=20=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../.gitignore | 25 +++
spring-boot-demo-template-thymeleaf/README.md | 204 ++++++++++++++++++
spring-boot-demo-template-thymeleaf/pom.xml | 68 ++++++
...gBootDemoTemplateThymeleafApplication.java | 25 +++
.../thymeleaf/controller/IndexController.java | 43 ++++
.../thymeleaf/controller/UserController.java | 45 ++++
.../template/thymeleaf/model/User.java | 22 ++
.../src/main/resources/application.yml | 11 +
.../main/resources/templates/common/head.html | 12 ++
.../main/resources/templates/page/index.html | 9 +
.../main/resources/templates/page/login.html | 13 ++
...DemoTemplateThymeleafApplicationTests.java | 16 ++
12 files changed, 493 insertions(+)
create mode 100644 spring-boot-demo-template-thymeleaf/.gitignore
create mode 100644 spring-boot-demo-template-thymeleaf/README.md
create mode 100644 spring-boot-demo-template-thymeleaf/pom.xml
create mode 100644 spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/SpringBootDemoTemplateThymeleafApplication.java
create mode 100644 spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/controller/IndexController.java
create mode 100644 spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/controller/UserController.java
create mode 100644 spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/model/User.java
create mode 100644 spring-boot-demo-template-thymeleaf/src/main/resources/application.yml
create mode 100644 spring-boot-demo-template-thymeleaf/src/main/resources/templates/common/head.html
create mode 100644 spring-boot-demo-template-thymeleaf/src/main/resources/templates/page/index.html
create mode 100644 spring-boot-demo-template-thymeleaf/src/main/resources/templates/page/login.html
create mode 100644 spring-boot-demo-template-thymeleaf/src/test/java/com/xkcoding/template/thymeleaf/SpringBootDemoTemplateThymeleafApplicationTests.java
diff --git a/spring-boot-demo-template-thymeleaf/.gitignore b/spring-boot-demo-template-thymeleaf/.gitignore
new file mode 100644
index 0000000..82eca33
--- /dev/null
+++ b/spring-boot-demo-template-thymeleaf/.gitignore
@@ -0,0 +1,25 @@
+/target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/build/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
\ No newline at end of file
diff --git a/spring-boot-demo-template-thymeleaf/README.md b/spring-boot-demo-template-thymeleaf/README.md
new file mode 100644
index 0000000..b8fb606
--- /dev/null
+++ b/spring-boot-demo-template-thymeleaf/README.md
@@ -0,0 +1,204 @@
+# spring-boot-demo-template-thymeleaf
+
+> 本 demo 主要演示了 Spring Boot 项目如何集成 thymeleaf 模板引擎
+
+## pom.xml
+
+```xml
+
+
+ * 主页 + *
+ * + * @package: com.xkcoding.template.thymeleaf.controller + * @description: 主页 + * @author: yangkai.shen + * @date: Created in 2018/10/10 10:12 AM + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Controller +@Slf4j +public class IndexController { + + @GetMapping(value = {"", "/"}) + public ModelAndView index(HttpServletRequest request) { + ModelAndView mv = new ModelAndView(); + + User user = (User) request.getSession().getAttribute("user"); + if (ObjectUtil.isNull(user)) { + mv.setViewName("redirect:/user/login"); + } else { + mv.setViewName("page/index"); + mv.addObject(user); + } + + return mv; + } +} +``` + +## UserController.java + +```java +/** + *+ * 用户页面 + *
+ * + * @package: com.xkcoding.template.thymeleaf.controller + * @description: 用户页面 + * @author: yangkai.shen + * @date: Created in 2018/10/10 10:11 AM + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Controller +@RequestMapping("/user") +@Slf4j +public class UserController { + @PostMapping("/login") + public ModelAndView login(User user, HttpServletRequest request) { + ModelAndView mv = new ModelAndView(); + + mv.addObject(user); + mv.setViewName("redirect:/"); + + request.getSession().setAttribute("user", user); + return mv; + } + + @GetMapping("/login") + public ModelAndView login() { + return new ModelAndView("page/login"); + } +} +``` + +## index.html + +```jsp + + ++ * 启动类 + *
+ * + * @package: com.xkcoding.template.thymeleaf + * @description: 启动类 + * @author: yangkai.shen + * @date: Created in 2018/10/10 10:10 AM + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@SpringBootApplication +public class SpringBootDemoTemplateThymeleafApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringBootDemoTemplateThymeleafApplication.class, args); + } +} diff --git a/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/controller/IndexController.java b/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/controller/IndexController.java new file mode 100644 index 0000000..228554a --- /dev/null +++ b/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/controller/IndexController.java @@ -0,0 +1,43 @@ +package com.xkcoding.template.thymeleaf.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.xkcoding.template.thymeleaf.model.User; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +/** + *+ * 主页 + *
+ * + * @package: com.xkcoding.template.thymeleaf.controller + * @description: 主页 + * @author: yangkai.shen + * @date: Created in 2018/10/10 10:12 AM + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Controller +@Slf4j +public class IndexController { + + @GetMapping(value = {"", "/"}) + public ModelAndView index(HttpServletRequest request) { + ModelAndView mv = new ModelAndView(); + + User user = (User) request.getSession().getAttribute("user"); + if (ObjectUtil.isNull(user)) { + mv.setViewName("redirect:/user/login"); + } else { + mv.setViewName("page/index"); + mv.addObject(user); + } + + return mv; + } +} diff --git a/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/controller/UserController.java b/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/controller/UserController.java new file mode 100644 index 0000000..2b57459 --- /dev/null +++ b/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/controller/UserController.java @@ -0,0 +1,45 @@ +package com.xkcoding.template.thymeleaf.controller; + +import com.xkcoding.template.thymeleaf.model.User; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +/** + *+ * 用户页面 + *
+ * + * @package: com.xkcoding.template.thymeleaf.controller + * @description: 用户页面 + * @author: yangkai.shen + * @date: Created in 2018/10/10 10:11 AM + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Controller +@RequestMapping("/user") +@Slf4j +public class UserController { + @PostMapping("/login") + public ModelAndView login(User user, HttpServletRequest request) { + ModelAndView mv = new ModelAndView(); + + mv.addObject(user); + mv.setViewName("redirect:/"); + + request.getSession().setAttribute("user", user); + return mv; + } + + @GetMapping("/login") + public ModelAndView login() { + return new ModelAndView("page/login"); + } +} diff --git a/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/model/User.java b/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/model/User.java new file mode 100644 index 0000000..01592d4 --- /dev/null +++ b/spring-boot-demo-template-thymeleaf/src/main/java/com/xkcoding/template/thymeleaf/model/User.java @@ -0,0 +1,22 @@ +package com.xkcoding.template.thymeleaf.model; + +import lombok.Data; + +/** + *+ * 用户 model + *
+ * + * @package: com.xkcoding.template.thymeleaf.model + * @description: 用户 model + * @author: yangkai.shen + * @date: Created in 2018/10/10 10:11 AM + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Data +public class User { + private String name; + private String password; +} diff --git a/spring-boot-demo-template-thymeleaf/src/main/resources/application.yml b/spring-boot-demo-template-thymeleaf/src/main/resources/application.yml new file mode 100644 index 0000000..c734329 --- /dev/null +++ b/spring-boot-demo-template-thymeleaf/src/main/resources/application.yml @@ -0,0 +1,11 @@ +server: + port: 8080 + servlet: + context-path: /demo +spring: + thymeleaf: + mode: HTML + encoding: UTF-8 + servlet: + content-type: text/html + cache: false \ No newline at end of file diff --git a/spring-boot-demo-template-thymeleaf/src/main/resources/templates/common/head.html b/spring-boot-demo-template-thymeleaf/src/main/resources/templates/common/head.html new file mode 100644 index 0000000..cb359ee --- /dev/null +++ b/spring-boot-demo-template-thymeleaf/src/main/resources/templates/common/head.html @@ -0,0 +1,12 @@ + + + + + + +