SpringMVC的五大核心组件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

  • 前言
  • 一、DispatcherServlet
  • 二、HandlerMapping
  • 三、Controller
  • 四、ModelAndView
  • 五、ViewResolver

前言

DispatcherServlet -前端控制器,用于统一接收请求并分发,组织处理请求的流程

HandlerMapping -映射请求路径与处理请求的控制器

Controller -由开发人员创建的,实际处理请求的控制器

ModelAndView -Controllera组件处理完请求后得到的结果,由数据与视图名称组成

ViewResolver -视图解析器,可根据视图名称(由ModelAndView:返回)确定需要使用的视图组件

SpringMVC的五大核心组件_第1张图片


提示:以下是本篇文章正文内容,下面案例可供参考


一、DispatcherServlet

DispatcherServlet:通常称之为“前端控制器”,用于统一接收请求并分发,
组织处理请求的流程
        -如果是使用web.xml文件配置项目的Web环境的项目,需要显式的在web.xml配置
它,例如映射的请求路径,并确保它是Web容器(例如Tomcat)在启动时就初始化
的,并在初始化时会加载Spring环境
        -如果是使用Spring注解来配置Spring MVC环境的项目,则不需要直接配置它,而是
通过自定义一个AbstractAnnotationConfigDispatcherServletlnitializer的子类来
间接的配置,例如配置它映射的请求路径
        -如果是使用Spring Booti框架的Web项目,你甚至可以不需要知道它的存在,默认映
射的请求路径是/*,当然,如果认为有必要的话,也可以配置为其它值


二、HandlerMapping

HandlerMapping:它是一个接口,Spring MVC框架内置了简单的实现类:
        SimpleUrlHandlerMapping,用于映射请求路径与处理请求的控制器,但是,在
实际应用中,并不会直接使用这个实现,而是使用@RequestMapping注解,或
进阶的@PostMapping、@DeleteMapping、@PutMapping、@GetMapping等
注解,直接配置请求路径与处理请求的方法的映射关系


三、Controller

Controller:是实际处理请求的控制器
        是开发者自行编写的,通常有多个,一般根据需要处理的请求所涉及的核心数
据类型来区分,例如与用户相关的请求则创建UserController,与订单相关的
请求则创建OrderController…
        这些类必须放在组件扫描的包或其子孙包下,并添加@Controller注解,或添加
@RestController注解,由于主流的开发模式是服务器端向客户端响应正文,通
常使用的是@RestController
        一般还会在这些类的声明之前添加@RequestMapping注解,以统一设计URL中
的前缀路径
        每个控制器类中将有若干个处理请求的方法


四、ModelAndView

ModelAndView:Controller组件处理完请求后得到的结果,由数据与视图名称组成
        在实际开发中,由于Spring MVC提供了更加便捷的API,通常并不直接使用这
种类型作为方法的返回值,当需要转发数据时,可以在方法的参数列表中添加
ModelMap对象用于封装需要转发的数据,并使用String类型的返回值表示视图
名称,如果需要重定向,则返回以redirect:作为前缀的Stringl即可
        主流的开发模式是服务器端向客户端响应正文,完全不需要使用该类型的对象


五、ViewResolver

ViewResolver:视图解析器,可根据视图名称确定需要使用的视图组件
        Spring MVC框架内置了简单的实现类:InternalResourceViewResolver,当使
用JSP文件作为视图时将使用它,主要配置prefix7和suffix这2个属性,Spring
MVC框架会将orefixl的值、控制器返回的视图名称、suffix的值拼接起来,以确
定JSP文件的位置并使用
        使用Thymeleaf的模版页面作为视图组件时,则配置ThymeleafViewResolver,
配置思想大致相当,但需要另外配置Thymeleaf的模版引擎和模版解析器
        主流的开发模式是服务器端向客户端响应正文,完全不需要使用该组件

你可能感兴趣的:(java,spring,mvc)