SpringMVC

SpringMVC概述

什么是SpringMVC

  • SpringMVC就是一个Spring内置的MVC框架。

  • MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化等等),而且使用简单,与Spring无缝集成。支持 RESTful风格的URL请求。

  • 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

SpringMVC作用

MVC模式(Model-View-Controller):解决页面代码和后台代码的分离。

SpringMVC原理

如果使用Servlet开发在接收请求参数,数据共享,页面跳转等操作相对比较复杂。servlet是java进行web开发的标准,既然springMVC是对servlet的封装,那么很显然SpringMVC底层就是Servlet,SpringMVC就是对Servlet进行深层次的封装。

SpringMVC执行流程和原理

流程图

springMVC

流程描述

01 用户发送出请求被前端控制器DispatcherServlet拦截进行处理。
02 DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
03 HandlerMapping找到具体的处理器(查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。
04 DispatcherServlet调用调用具体的处理器(Handler/Controller)。
05 Controller执行完成返回ModelAndView对象。
06 HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。
07 DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
08 ViewReslover解析ModelAndView后返回具体View(视图)给DispatcherServlet。
09 DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
10 DispatcherServlet响应View给用户。

涉及组件分析

1 前端控制器DispatcherServlet(不需要程序员开发)由框架提供,在web.xml中配置。
作用:接收请求,响应结果,相当于转发器,中央处理器。

2 处理器映射器HandlerMapping(不需要程序员开发)由框架提供。
作用:根据请求的url查找Handler(处理器/Controller),可以通过XML和注解方式来映射。

3 处理器适配器HandlerAdapter(不需要程序员开发)由框架提供。
作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler中的方法。

4 处理器Handler(也称之为Controller,需要程序员开发)
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。
作用:接受用户请求信息,调用业务方法处理请求,也称之为后端控制器。

5 视图解析器ViewResolver(不需要程序员开发)由框架提供。
作用:进行视图解析,把逻辑视图解析成真正的物理视图。
SpringMVC框架支持多种View视图技术,包括:jstlView、freemarkerView、ThymeleafView等。

6 视图View(需要工程师开发)
作用:把数据展现给用户的页面
View是一个接口,实现类支持不同的View技术(jsp、freemarkerf等)

流程总结

SpringMVC需要程序员完成的工作有三个:

1 配置前端控制器DispatcherServlet。

2 开发后端控制器Handler/Controller。

3 开发视图View。

SpringMVC常用注解

  • @Controller
      负责注册一个bean 到spring 上下文中

  • @RequestMapping
      注解为控制器指定可以处理哪些 URL 请求

  • @RequestBody
      该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上

  • @ResponseBody
       该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

  • @ModelAttribute    
      在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法

  在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中

  • @RequestParam 
      在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法

  • @PathVariable
      绑定 URL 占位符到入参

  • @ExceptionHandler
      注解到方法上,出现异常时会执行该方法

  • @ControllerAdvice
      使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常

posted @ 2020-10-08 20:29  Z_Y_L  阅读(92)  评论(0编辑  收藏  举报