这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
前言
吃饱饭才有力气写代码~
昨天我们学习了SpringBoot的一些最最基础的概念,觉得这样学习效率很低。今天呢想重点理解一下SpringMVC相关的点,因为总觉得这个地方理解的不够透彻。接下来就搞一搞它!
一.Spring MVC 概述
1.1 MVC
什么是 MVC 呢?
MVC:Model + View + Controller(数据模型+视图+控制器)
1.2 三层架构
Presentation tier + Application tier + Data tier(展现层+应用层+数据访问层)
1.3 MVC和三层架构的关系
以前的理解是:MVC的M就是数据访问层、V就是展现层、C就是应用层。是不是很有道理的样子~
但是实际上MVC只存在三层架构的展现层,M实际上是数据模型,是包含数据的对象;V 指的是视图页面,包含JSP、freeMarkerd等;C是控制器(Spring MVC 的注解@Controller的类);在Spring MVC里,有一个专门的Model类,用来和V的数据进行交互和传值。
而三层架构呢就是整个应用的架构,是由Spring框架负责管理的,一般项目结构中都有Service层、Dao层,分别对应着应用层和数据访问层。
二.Spring MVC 常用注解
2.1 @Controller
@Controller注解在类上,表明这个类是Spring MVC里的Controller,并将其声明为Spring 的一个Bean,Dispatcher Servlet会自动扫描注解了此注解的类,并将Web请求映射到注解了@RequestMapping的方法上。
2.2 @RequestMapping
@RequestMapping 注解用来映射Web请求(访问路径和参数)、处理类和方法的。它可以注解在类或者方法上,注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支持Servlet的request和response作为参数,也支持对request和reponse的媒体类型进行配置。
2.3 @ResponseBody
@ResponseBody 支持将返回值放在response体内,而不是返回一个页面。我们在很多基于Ajax的程序中可以用这个注解返回数据而不是页面;这个注解可以放在返回值前或者方法上。
2.4 @RequestBody
@RequestBody 允许request的参数在request体内,而不是直接链接在地址后面。这个注解放在参数前。
2.5 @PathVariable
@PathVariable 用来接收路径参数,如/news/001可接收001作为参数,此注解放置在参数前。
2.6 @RestController
@RestController 是一个组合注解,结合了@Controller和@ResponseBody,这就意味着当我们只开发一个和页面交互的控制的时候,要用到这个注解。