浅谈SpringMVC五大组件以及对执行原理的分析。

 <servlet-name>springMvc</servlet-name>

 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

 <init-param>

      <param-name>contextConfigLocation</param-name>

       <param-value>classpath:springmvc.xml</param-value>

  </init-param>

  <load-on-startup>1</load-on-startup>
<servlet-name>springMvc</servlet-name>

<url-pattern>*.form</url-pattern>



DispatcherServlet配置在web.xml文件中。init-param为Servlet启动所需参数。DispatcherServlet会读取初始shucontextConfigLocation参数里面的值从而获取springmvc的配置位置自启动容器



### []( )2、HandlerMapping (处理器映射器)



HandlerMapping 是处理器映射,它的关键作用是将请求进行派发,负责请将求与控制器建立互相对应的关系。它最终由 DispatcherServlet 调用,DispatcherServlet 会从容器中取出所有 HandlerMapping 实例并遍历,让 HandlerMapping 实例根据自己实现类的方式去尝试查找 Handler。它标明了路径与Controller的对应关系,不同的路径访问不同的Controller



> 配置HandlerMapping :



mvc:annotation-driven/

<property name="mappings">

    <props>

        <prop key="/hello">helloController</prop>

    </props>

</property>



### []( )3、Controller (处理请求的控制器)



处理请求的控制器,负责处理由DispatcherServlet 分发的请求,把用户请求的数据发送到业务处理层处理之后封装成一个Model ,然后把该Model 返回给对应的View 进行展示。它实际上就是用来处理业务逻辑的Java类。



> 配置Controller类 :



@Controller

public class DataController {

@RequestMapping("getData")

public ModeAndView hello(String Id) {

    System.out.println("hello");

    return new ModeAndView("hello")

}

}




### []( )4、ModelAndView (封装数据和视图信息)



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



### []( )5、ViewResolver (视图解析器)



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



> 配置ViewResolver :



<property name="prefix" value="/WEB-INF/"/>

<property name="suffix" value=".html"></property>



[]( )SpringMVC执行原理

--------------------------------------------------------------------------



![在这里插入图片描述](https://img-blog.csdnimg.cn/92282e82bacb482ea7f77f1d3ab5c824.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55m-5oCd5LiN5b6X5bCP6LW1,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)



1.  发起请求到前端控制器DispatcherServlet

2.  前端控制器调用处理器映射器HandlerMapping查找Handler

3.  处理器映射器向前端控制器返回找到的Handler

4.  前端控制器调用处理器适配器HandlerAdapter执行Handler

5.  处理器适配器去执行Handler

6.  Handler执行完成给处理器适配器返回ModelAndView

7.  处理器适配器向前端控制器返回ModelAndView

8.  前端控制器请求视图解析器ViewResolver去进行视图解析

9.  视图解析器向前端控制器返回视图View

10.  前端控制器进行视图渲染向用户响应结果


# 总结

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

**麻烦帮忙转发一下这篇文章+关注我**

![就这一次!拼多多内部架构师培训Kafka源码笔记(现已绝版)](https://img-blog.csdnimg.cn/img_convert/c6a441fc353fb073959e842106a6a458.webp?x-oss-process=image/format,png)

 总结

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

**麻烦帮忙转发一下这篇文章+关注我**

[外链图片转存中...(img-3vkr2ng4-1721836696311)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值