一、Spring MVC概述
1.MVC:Model + View + Controller(数据模型 + 视图 + 控制器)
2.三层架构:Presentation tier + Application tier + Data tier(展示层 + 应用层 + 数据访问层)
3.MVC和三层架构的关系,MVC只存在三层架构的展示层。
M实际是数据模型,是包含数据的对象。在Spring MVC里,有一个专门的类叫Model,用来和V之间的数据交互、传值。
V指的是视图界面,包含JSP、freeMarker、Velocity、Thymeleaf、Tile等。
C就是控制器(Spring MVC的注解@Controller的类)。
三层架构是整个应用的的架构,是由Spring框架负责管理的,一般项目结构中都由Service层、Dao层,这两个反馈在应用层和数据访问层。
二、Spring MVC项目快速搭建
三、Spring MVC的常用注解
1.@Controller
@Controller注解在类上,表明这个类是Spring MVC里的Controller,将其声明为Spring的一个Bean,Dispatcher Servlet会自动扫描注解了此注解的类(原理类似AOP),并将Web请求映射到注解了@RequestMapping的方法上。
2.@RequestMapping
@RequestMapping注解是用来映射Web请求(访问路径和参数)、处理类和方法的。
@RequestMapping可以注解在类或方法上。注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支持Servlet的request和response作为参数,也支持对request和response的媒体类型进行配置。
3.@ResponseBody
@ResponseBody支持将返回值放在response体内,而不是返回一个页面。此注解可放置在返回值前或者方法上。
4.@RequestBody
@RequestBody允许request的参数在request体中,而不是在直接链接在地址后面。此注解放置在参数前。
5.@PathVariable
@PathVariable用来接收路径参数,如/mfq/001,可接收001作为参数,此注解放置在参数前。
6.@RestController
@RestController是一个组合注解,组合了@Controller和ResponseBody。
四、Spring MVC基本配置
1.静态资源映射、拦截器配置
2.@ControllerAdvice
通过@ControllerAdvice,可以将对于控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,对所有注解了@RequestMapping的控制器内的方法有效。
1)@ExceptionHandler:用于全局处理控制器里的异常。
2)@InitBinder:用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。
3)@ModelAttribute:本来的作用是绑定键值对到Model里,此处是让全局的@RequestMapping都能获得在此处设置的键值对。
3.其它配置
1)快捷的ViewController
2)路径匹配参数配置
3)更多配置
查看WebMvcConfigurerAdapter、WebMvcConfigurer类的API。