SpringMvc请求流程详解及核心组件(面试题)

        springMvc处理请求的流程,在面试题中也是常常被提及的一部分知识,所以就给大家详细整理了一下,供大家了解或者温习巩固~~

一、SpringMvc请求流程:

流程图中的序号分别表示的意思如下:

1、前端发送请求被前端控制器DispatcherServlet拦截

2、前端控制器调用处理器映射HandlerMapping对请求URL进行解析,解析之后返回给前端控制器

3、前端控制器调用处理器适配器处理调用链

4、处理器适配器基于反射通过适配器设计模式完成处理器(控制器)的调用,处理用户请求

5、处理器适配器将控制器返回的视图和数据信息封装成ModelAndVIew响应给前端控制器

6、前端控制器调用视图解析器ViewResolve对ModelAndView进行解析,将解析结果(视图资源和数据)响应给前端控制器

7、前端控制器调用视图view组件将数据进行渲染,将渲染的结果(静态资源)响应给前端控制器

8、前端控制器响应用户请求


二、SpringMvc的核心组件

1、DispatcherServlet前端控制器,总控制器,由SpringMvc提供的,无需工程师开发;

作用:接收请求,协同各组件工作,响应请求

2、HandleMapping处理器映射器,也是由SpringMvc提供的,无需工程师开发;可以自定义配置

作用:负责用户根据的url找到对应的Handle(控制器)

3、HandleAdapter处理器适配器,也是由SpringMvc提供的,无需工程师开发;

作用:根据HandleMapping(处理器映射)解析用户的请求的调用链,通过适配器模式完成Handle(控制器)的调用

4、Handle(控制器/处理器),是由工程师根据业务需求进行开发的;

作用:处理请求

5、ModelAndView(模型和数据)由SpringMvc提供的,无需工程师开发;

作用:用于封装处理器返回的数据和响应的视图

6、ViewResolver(视图解析器)由SpringMvc提供的,无需工程师开发;可以自定义配置

作用:对ModelAndView进行解析

7、View(视图)由SpringMvc提供的,无需工程师开发;

作用:完成数据的渲染


三、处理器映射器自定义配置: 

        不同的处理器映射器配置对URL处理方式也不相同,使用对应的处理器映射器之后我们的前端请求规则也需要发生相应的变化

SpringMvc提供的处理器映射器
BeanNameHandleMapping:根据控制器id来访问控制器
SimpleUrlHandlerMapping:根据控制器配置的路径(默认的)

3.1 BeanNameHandleMapping配置:

  • 在SpringMvc配置文件中通过bean标签声明处理映射器
  • 配置BeanNameHandleMapping
  <!--配置处理器映射器 BeanNameHandleMapping-->
    <!--BeanNameHandleMapping可以省略类上的路径,以类的的id进行访问-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

 四、视图解析器自定义配置:

        

Spring提供的视图解析器
UrlBasedViewResolver
InternalResourceViewResolver

4.1 UrlBasedViewResolver的配置:

        id名字必须是“viewResolver”,配置 UrlBasedViewResolver的时候需要添加jstl依赖

 <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <!--需要添加jstl依赖-->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

4.2 InternalResourceViewResolver的配置:

 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暇光曙墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值