Spring MVC

Spring MVC

Spring MVC 是一个基于 MVC 设计模式的轻量级 Web 开发框架,主要完成的功能是:接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示。本质上相当于 Servlet。
MVC,即 Model 模型、View 视图,及 Controller 控制器。
View:视图,为用户提供使用界面,与用户直接进行交互。
Model:模型,承载数据,并对用户提交请求进行计算的模块。
Controller:控制器,用于将用户请求转发给相应的 Model 进行处理,并根据 Model 的计算结果向用户提供相应响应。

Spring MVC五大核心组件及工作流程

DispatcherServlet:前端控制器,用于在Spring MVC框架接收所有来自客户端的请求,并进行分发、组织整个处理流程。
HandlerMapping:处理器映射器,记录了请求路径与处理请求的控制器(方法)的对应关系。
Controller:控制器,实际处理请求的组件,是由开发人员自行定义的。

  • 注意:如果设计的控制器处理请求的方法是响应正文的,当Controller组件执行结束后,就会开始向客户端响应数据,不会执行以上示例图中剩余的流程
    ModelAndView:数据与视图,是Controller处理请求后返回的对象,此对象封装了Controller处理请求后的数据和显示这些数据所使用到的视图组件的名称。
    ViewResolver:视图解析器,可以根据“视图组件的名称”来决定具体使用的视图组件。
    1.用户发送请求至前端控制器DispatcherServlet
    2.DispatcherServlet收到请求调用处理器映射器HandlerMapping。
    3.处理器映射器根据请求url找到具体的处理器,生成处理器执行链
    HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给
    DispatcherServlet。
    4.DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执
    行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据
    验证等操作
    5.执行处理器Handler(Controller,也叫页面控制器)。
    6.Handler执行完成返回ModelAndView
    7.HandlerAdapter将Handler执行结果ModelAndView返回到
    DispatcherServlet
    8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
    9.ViewReslover解析后返回具体View
    10.DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图
    中)。
    11.DispatcherServlet响应用户。

注解

@RestController
@RequestMapping
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@ResponseBody
@RequestBody
@RequestParam
@PathVariable
@ControllerAdvice
@RestControllerAdvice
@ExcpetionHandler

Spring MVC的映射关系

在Spring MVC框架,使用控制器(Controller)来接收请求、响应结果。
@Controller用于声明控制器类。
@Responsebody作用是将Java对象转为json格式的数据,并放入响应体中。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,它的效果等同于通过response对象输出指定格式的数据。
@RestController相当于一个组合注解,是@Controller和@ResponseBody组合而成的。
@RequestMapping作用是配置请求路径与处理请求的方法的映射关系。
在开发实践中,通常在控制器类上使用@RequestMapping配置请求路径的前缀部分,在处理请求的方法上使用限制了请求方式的注解。
@GetMapping用于处理http get请求,并将请求映射到具体的处理方法中。
@PostMapping用于处理http post请求,并将请求映射到具体的处理方法中。
@PutMapping用于处理http put请求,并将请求映射到具体的处理方法中。
@DeleteMapping用于处理http delete请求,并将请求映射到具体的处理方法中。
@PatchMapping用于处理http patch请求,并将请求映射到具体的处理方法中。
如果尝试添加数据,使用POST请求方式
如果尝试删除数据,使用DELETE请求方式
如果尝试修改数据,使用PUT请求方式
如果尝试查询数据,使用GET请求方式

Spring MVC请求参数

如果客户端没有提交对应名称的请求参数,则方法的参数值为null
如果客户端提交对应名称的请求参数,但没有值,则方法的参数值为空字符串(“”),如果方法的参数是需要将字符串转换为别的格式,但无法转换,则参数值为null。
如果客户端提交对应名称的请求参数,且参数有正确的值,则方法的参数值为就是请求参数值,如果方法的参数是需要将字符串转换为别的格式,但无法转换,则会抛出异常
@RequestBody作用是接受放在请求体中的json格式的数据并转为Java对象。
添加@RequestBody注解,则客户端提交的请求参数必须是对象格式的。
没有添加@RequestBody注解,则客户端提交的请求参数必须是FormData格式的。
@RequestParam是将url后的请求参数绑定到方法参数上
value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。
required:该参数是否为必传项。默认是true,请求中一定要传入对应的参数,否则会报错,如果设置为false时,当请求中没有此参数,将会默认为null。
defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。
@PathVariable是将url中占位符处的值绑定到方法参数上
Spring MVC支持在设计url时,使用{名称}格式的占位符,在配置占位符时,可以在占位符名称的右侧,可以添加冒号,再加上正则表达式,对占位符的值的格式进行限制。在多个不冲突有正则表达式的占位符配置的url是可以共存的。

Spring MVC统一处理异常机制

Spring MVC提供了统一处理异常的机制,它可以使得Controller不再处理异常,改为抛出异常,而Spring MVC在调用Controller处理请求时,会捕获Controller抛出的异常并尝试处理。
@ControllerAdvice用于声明全局异常处理类
@RestControllerAdvice相当于一个组合注解,是@ControllerAdvice和@ResponseBody组合而成的。
@ExceptionHandler用于声明异常处理方法,多个处理异常的方法不能处理同一种异常,但处理的异常可以存在继承关系。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值