SpringMVC五大组件

五大组件及作用

DispatcherServlet

DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。

DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。

HandlerMapping 

HandlerMapping 是处理器映射,它的作用是请求派发,负责请求和控制器建立对应的关系。它是由 DispatcherServlet 调用,DispatcherServlet 会从容器中取出所有 HandlerMapping 实例并遍历,让 HandlerMapping 实例根据自己实现类的方式去尝试查找 Handler。也就是说,DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean,这个Bean的名字为“HandlerMapping”。

Controller

控制器,负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。

ModelAndView                 

封装数据信息和视图信息的模型。使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。 

ViewResolver                   

视图解析器,ViewResolver 的主要作用是把一个逻辑上的视图名称解析为一个真正的视图。

五大组件的关系

DispatcherServlet收到请求后,依据HandlerMapping的配置,调用相应的Controller来处理,Controller将处理结果封装成ModelAndView对象,返回给DispatcherServlet,DispatcherServlet依据ViewResolver的解析,调用相应的视图对象,(如jsp)来生成相应的页面。

 

下面这个图更完整:

处理模型数据

处理模型数据方式一:将方法的返回值设置为ModelAndView

@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
    //1.创建ModelAndView对象
    ModelAndView mav = new ModelAndView();
    //2.设置模型数据,最终会放到request中
    mav.addObject("user","admin");
    //3.设置视图
    mav.setViewName("success");
    return mav;
}

处理模型数据方式二:方法返回值仍是String类型,在方法的入参中传入Map,Model或者ModelMap

@RequestMapping("/testMap")
public String testMap(Map<String,Object> map){
    //向Map中添加模型数据,最终会自动放到request域中
    map.put("user","admin");
    return SUCCESS;
}

不管将处理器方法的返回值设置为ModelAndView,还是在方法的入参中传入Map,Model或者ModelMap,SpringMVC都会转换为一个ModelAndView对象。

 

 

参考自百度百科以及大佬博客:

              https://www.cnblogs.com/superAnny/p/6491135.html

              https://blog.csdn.net/whalefall/article/details/83787950

  • 12
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值