From 9a7349d93dac955016a90adcfcc7da517c1e81a8 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Wed, 22 Jan 2025 17:59:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BD=BF=E7=94=A8Controller=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=BD=91=E9=A1=B5=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mvc/SpringMVC笔记.md | 129 ++++++++++++++++++ .../SpringMVC笔记/image-20250122171536808.png | Bin 0 -> 9740 bytes mvc/pom.xml | 25 +++- .../java/cn/bunny/mvc/MvcApplication.java | 2 - .../mvc/configuration/Knife4jConfig.java | 33 +++++ .../bunny/mvc/controller/UseController.java | 48 +++++++ .../mvc/controller/UseRestController.java | 19 +++ mvc/src/main/resources/static/error/400.html | 10 ++ mvc/src/main/resources/static/error/404.html | 10 ++ mvc/src/main/resources/static/error/500.html | 64 +++++++++ mvc/src/main/resources/templates/hello.html | 40 ++++++ .../main/resources/templates/jumpPage.html | 10 ++ .../main/resources/templates/page/test.html | 11 ++ mvc/src/main/resources/templates/user.html | 10 ++ 14 files changed, 403 insertions(+), 8 deletions(-) create mode 100644 mvc/SpringMVC笔记.md create mode 100644 mvc/images/SpringMVC笔记/image-20250122171536808.png create mode 100644 mvc/src/main/java/cn/bunny/mvc/configuration/Knife4jConfig.java create mode 100644 mvc/src/main/java/cn/bunny/mvc/controller/UseController.java create mode 100644 mvc/src/main/java/cn/bunny/mvc/controller/UseRestController.java create mode 100644 mvc/src/main/resources/static/error/400.html create mode 100644 mvc/src/main/resources/static/error/404.html create mode 100644 mvc/src/main/resources/static/error/500.html create mode 100644 mvc/src/main/resources/templates/hello.html create mode 100644 mvc/src/main/resources/templates/jumpPage.html create mode 100644 mvc/src/main/resources/templates/page/test.html create mode 100644 mvc/src/main/resources/templates/user.html diff --git a/mvc/SpringMVC笔记.md b/mvc/SpringMVC笔记.md new file mode 100644 index 0000000..8c1fed0 --- /dev/null +++ b/mvc/SpringMVC笔记.md @@ -0,0 +1,129 @@ +# SpringMVC笔记 + +## 访问控制 + +请求地址时返回对应的网页文件 + +- `@RestController`用于返回对象格式的内容,在后面会使用`ModelAndView`可以返回网页文件 +- `@Controller`用于返回网页文件 + +### 环境要求 + +```xml + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + + org.projectlombok + lombok + 1.18.36 + +``` + +### 错误页面设置 + +在这个路径下可以配置错误码要访问的页面,也就是可以自定义页面内容 + +![image-20250122171536808](./images/SpringMVC笔记/image-20250122171536808.png) + +### 使用`@Controller` + +返回需要访问的HTML内容页面,最后返回的字符串就是页面,这个页面位于`templates`目录下 + +```java +@RequestMapping("/use") +@Controller +public class UseController { + + // 带参数访问 + @RequestMapping(value = "hello", method = RequestMethod.GET, params = {"name"}) + public String hello() { + return "hello"; + } + + @GetMapping("jumpPage") + public String jumpPage() { + return "jumpPage"; + } + + @GetMapping("index") + public String quick() { + return "user"; + } + + // 跳转的页面 + @GetMapping("toJump") + public String toJump() { + return "redirect:jumpPage"; + } +} +``` + +如果在使用`@Controller`需要返回JSON内容,需要在控制器方法上加上`@ResponseBody` + +```java +@GetMapping("getJson") +@ResponseBody +public List getJson() { + ArrayList list = new ArrayList<>(); + list.add("a"); + list.add("b"); + list.add("c"); + + return list; +} +``` + +### 使用`@RestController` + +如果使用`@RestController`那么返回的就是JSON对象,但是这时候要想返回网页文件,需要使用`ModelAndView` + +```java +@RequestMapping("userRest") +@RestController +public class UseRestController { + + @GetMapping("page/test") + public ModelAndView test() { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("page/test"); + modelAndView.addObject("message", "这是消息内容"); + return modelAndView; + } +} +``` + +我们引入了`thymeleaf`所以有以下内容`

` + +```html + + + + + 使用RestController返回页面信息 + + +

使用RestController返回页面信息

+

+ + +``` \ No newline at end of file diff --git a/mvc/images/SpringMVC笔记/image-20250122171536808.png b/mvc/images/SpringMVC笔记/image-20250122171536808.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e888cb85cba6385b92d9391a8b32c31854cf48 GIT binary patch literal 9740 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 m2<0wU1k3-w^M8A|5b`HXn}qy(1^qAThx`Np literal 0 HcmV?d00001 diff --git a/mvc/pom.xml b/mvc/pom.xml index 22c6259..8ff8f16 100644 --- a/mvc/pom.xml +++ b/mvc/pom.xml @@ -32,23 +32,36 @@ org.springframework.boot - spring-boot-starter-thymeleaf + spring-boot-starter-web org.springframework.boot - spring-boot-starter-web + spring-boot-starter-test + test - + + + org.springframework.boot + spring-boot-starter-thymeleaf + + org.springframework.boot spring-boot-devtools runtime true + - org.springframework.boot - spring-boot-starter-test - test + org.projectlombok + lombok + 1.18.36 + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + 4.5.0 diff --git a/mvc/src/main/java/cn/bunny/mvc/MvcApplication.java b/mvc/src/main/java/cn/bunny/mvc/MvcApplication.java index b393517..5c0b17b 100644 --- a/mvc/src/main/java/cn/bunny/mvc/MvcApplication.java +++ b/mvc/src/main/java/cn/bunny/mvc/MvcApplication.java @@ -5,9 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MvcApplication { - public static void main(String[] args) { SpringApplication.run(MvcApplication.class, args); } - } diff --git a/mvc/src/main/java/cn/bunny/mvc/configuration/Knife4jConfig.java b/mvc/src/main/java/cn/bunny/mvc/configuration/Knife4jConfig.java new file mode 100644 index 0000000..331f43c --- /dev/null +++ b/mvc/src/main/java/cn/bunny/mvc/configuration/Knife4jConfig.java @@ -0,0 +1,33 @@ +package cn.bunny.mvc.configuration; + +import io.swagger.v3.oas.models.ExternalDocumentation; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import lombok.extern.slf4j.Slf4j; +import org.springdoc.core.models.GroupedOpenApi; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@Slf4j +public class Knife4jConfig { + @Bean + public OpenAPI openAPI() { + // 作者等信息 + Contact contact = new Contact().name("Bunny").email("1319900154@qq.com").url("http://bunny-web.site"); + // 使用协议 + License license = new License().name("MIT").url("https://MUT.com"); + // 相关信息 + Info info = new Info().title("家庭理财管理系统").description("家庭理财管理系统").version("v1.0.0").contact(contact).license(license).termsOfService("MIT"); + + return new OpenAPI().info(info).externalDocs(new ExternalDocumentation()); + } + + // 管理员相关分类接口 + @Bean + public GroupedOpenApi groupedOpenAdminApi() { + return GroupedOpenApi.builder().group("后台管理").pathsToMatch("/user/**").build(); + } +} diff --git a/mvc/src/main/java/cn/bunny/mvc/controller/UseController.java b/mvc/src/main/java/cn/bunny/mvc/controller/UseController.java new file mode 100644 index 0000000..8347632 --- /dev/null +++ b/mvc/src/main/java/cn/bunny/mvc/controller/UseController.java @@ -0,0 +1,48 @@ +package cn.bunny.mvc.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.ArrayList; +import java.util.List; + +@RequestMapping("/use") +@Controller +public class UseController { + + // 带参数访问 + @RequestMapping(value = "hello", method = RequestMethod.GET, params = {"name"}) + public String hello() { + return "hello"; + } + + @GetMapping("jumpPage") + public String jumpPage() { + return "jumpPage"; + } + + @GetMapping("index") + public String quick() { + return "user"; + } + + // 跳转的页面 + @GetMapping("toJump") + public String toJump() { + return "redirect:jumpPage"; + } + + @GetMapping("getJson") + @ResponseBody + public List getJson() { + ArrayList list = new ArrayList<>(); + list.add("a"); + list.add("b"); + list.add("c"); + + return list; + } +} diff --git a/mvc/src/main/java/cn/bunny/mvc/controller/UseRestController.java b/mvc/src/main/java/cn/bunny/mvc/controller/UseRestController.java new file mode 100644 index 0000000..b75156e --- /dev/null +++ b/mvc/src/main/java/cn/bunny/mvc/controller/UseRestController.java @@ -0,0 +1,19 @@ +package cn.bunny.mvc.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; + +@RequestMapping("userRest") +@RestController +public class UseRestController { + + @GetMapping("page/test") + public ModelAndView test() { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("page/test"); + modelAndView.addObject("message", "这是消息内容"); + return modelAndView; + } +} diff --git a/mvc/src/main/resources/static/error/400.html b/mvc/src/main/resources/static/error/400.html new file mode 100644 index 0000000..beaaf7f --- /dev/null +++ b/mvc/src/main/resources/static/error/400.html @@ -0,0 +1,10 @@ + + + + + 400 + + +

400

+ + \ No newline at end of file diff --git a/mvc/src/main/resources/static/error/404.html b/mvc/src/main/resources/static/error/404.html new file mode 100644 index 0000000..e5f9d7b --- /dev/null +++ b/mvc/src/main/resources/static/error/404.html @@ -0,0 +1,10 @@ + + + + + 404 + + +

404

+ + \ No newline at end of file diff --git a/mvc/src/main/resources/static/error/500.html b/mvc/src/main/resources/static/error/500.html new file mode 100644 index 0000000..6071bf4 --- /dev/null +++ b/mvc/src/main/resources/static/error/500.html @@ -0,0 +1,64 @@ + + + + + 500 - 服务器错误 + + + + +
+

:'(

+

服务器开小差啦!管理员正在修理中...

+

还请阁下静候站点恢复~

+
+ + \ No newline at end of file diff --git a/mvc/src/main/resources/templates/hello.html b/mvc/src/main/resources/templates/hello.html new file mode 100644 index 0000000..05a8084 --- /dev/null +++ b/mvc/src/main/resources/templates/hello.html @@ -0,0 +1,40 @@ + + + + + + hello + + +

Hello

+
+ 带参数显示 +

{{ message }}

+

{{count}}

+ + + +
+ + + \ No newline at end of file diff --git a/mvc/src/main/resources/templates/jumpPage.html b/mvc/src/main/resources/templates/jumpPage.html new file mode 100644 index 0000000..d30c7b7 --- /dev/null +++ b/mvc/src/main/resources/templates/jumpPage.html @@ -0,0 +1,10 @@ + + + + + jumpPage + + +跳转的页面 + + \ No newline at end of file diff --git a/mvc/src/main/resources/templates/page/test.html b/mvc/src/main/resources/templates/page/test.html new file mode 100644 index 0000000..35a78e9 --- /dev/null +++ b/mvc/src/main/resources/templates/page/test.html @@ -0,0 +1,11 @@ + + + + + 使用RestController返回页面信息 + + +

使用RestController返回页面信息

+

+ + \ No newline at end of file diff --git a/mvc/src/main/resources/templates/user.html b/mvc/src/main/resources/templates/user.html new file mode 100644 index 0000000..f385631 --- /dev/null +++ b/mvc/src/main/resources/templates/user.html @@ -0,0 +1,10 @@ + + + + + 测试用户界面 + + +

哈哈哈1ss

+ + \ No newline at end of file