在本文中,我们将使用Spring Boot来实现一个Web工程。
Spring MVC简介
Spring MVC是Spring Framework中的一个组件,原名为Spring Web MVC。
不过人们更喜欢将其称为Spring MVC。由它的名字可知,它是一款Web框架。
通过Spring Web MVC这个名字,我们就可以对它有一个宏观的认识。
· Spring彰显了它的家族身份,代表它来自Spring家族
· Web代表它是一款与Web相关的框架
· MVC则代表它的本领
那么,这个MVC具体是什么意思呢?MVC模式是软件工程中的一种软件架构模式,把软件系统分为3个基本部分:模型(Model)、视图(View)和控制器(Controller)。
· 模型(Model):Model是由一个实体Bean实现的,是数据的载体
· 视图(View):在Java EE应用程序中,View可以由JSP(Java ServerPage)担任。在目前的前/后端分离模式下,View已经由前端取代
· 控制器(Controller):在Java EE应用中,Controller可能是一个Servlet。在Spring MVC中,控制器的核心是DispatcherServlet
其实,我们在上一章的Hello World示例中,已经使用过Spring MVC了。
什么?你完全没感觉到?那就对了!这就是Spring Boot的“杀手锏”,它可以让你感觉不到它的存在。
简单回顾一下在Spring Boot中使用Spring MVC时需要我们做什么。
添加Web Starter:
编写Controller:
如果你在非Spring Boot环境下配置过Spring MVC,将更能体会到SpringBoot的简洁与高效(“没有对比,就没有伤害”这个道理在技术圈也同样适用)。然而,这对于Spring Boot来说只是日常操作,平平无奇。这里就不展开叙述了,后面会经常遇到。本章主要介绍Spring MVC的相关知识。
接收参数的各种方式
上一章中的Hello World程序只是一个非常简单的例子,hello方法没有接收任何参数,而在实际应用中,我们需要处理各式各样的参数。Spring MVC接收参数的方式大致可以分为以下4种:
· 无注解方式
· @RequestParam方式
· @PathVariable方式
· @RequestBody方式
常用注解
在学习如何接收参数之前,先来认识一下Spring MVC中的常用注解,如表4-1所示
@Controller
@Controller用来修饰类,表示该类为一个Controller对象。Spring容器在启动时会将该类实例化。
@RequestMapping
@RequestMapping用来修饰类或方法,设置接口的访问路径。在修饰类时,一般用于设置该类下所有接口路径的前缀。
@ResponseBody
74@ResponseBody用来修饰类或方法。在修饰方法时,该方法以JSON格式返回数据;在修饰类时,该类下的所有方法默认都以JSON格式返回数据。
@RequestParam
@RequestParam用来修饰参数,可以根据名字与参数进行绑定,相当于ServletRequest.getParameter()。
@RequestBody
@RequestBody用来修饰参数,接收JSON格式的参数,经常应用于AJAX请求,前/后端分离的场景下。
@PathVariable
@PathVariable用来修饰参数,用于获取URL上的值。除了上面这些,我们还会用到一些其他的注解。这些注解可以说是以上注解的一个“变种”,可以被称为“组合注解”。什么是组合注解呢?继续阅读,一看便知:
· @RestController=@Controller @ResponseBody
· @GetMapping=@RequestMapping(method=RequestMethod.GET)
· @PostMapping=@RequestMapping(method=RequestMethod.POST)
· @PutMapping=@RequestMapping(method=RequestMethod.PUT)
· @PatchMapping=@RequestMapping(method=RequestMethod.PATCH)
· @DeleteMapping=@RequestMapping(method=RequestMethod.DELETE)
相信聪明的你已经发现了,组合注解就是具有多个功能的注解,是由多个注解或一个注解与一个特定的属性值组成的注解,相当于对注解的一种封装。封装后的注解具有多个功能,如:@RestController不仅可以标识一个Controller,还可以让被标识的Controller中的所有方法都返回JSON格式的数据;@GetMapping不仅可以映射一个请求路径,还可以让该路径只响应GET方法。
准备工作
在正式开始之前,需要做一些准备工作。首先,我们需要创建一个User类,用来接收JSON参数及返回JSON数据,代码如下:
至此,Spring MVC接收参数的几种方式就介绍完了。也许你已经感觉到了,这样测试接口既要输入请求地址,又要设置请求类型,非常麻烦。