面试官:你分析过SpringMVC的源码吗?

  

<强> 1。MVC使用

  

在研究源码之前,先来回顾以下springmvc是如何配置的,这将能使我们更容易理解源码。

  

1.1 web . xml   

 <代码> & lt; servlet>
  & lt; servlet-name> mvc-dispatcher
  & lt; servlet-class> org.springframework.web.servlet.DispatcherServlet
  & lt; !——配置springMVC需要加载的配置文件
  spring-dao.xml、spring-service.xml spring-web.xml
  Mybatis——比;春天→springmvc
  ——比;
  & lt; init-param>
  & lt; param-name> contextConfigLocation
  & lt; param-value>类路径:春天/spring - * .xml
  & lt;/init-param>
  & lt;/servlet>
  & lt; servlet-mapping>
  & lt; servlet-name> mvc-dispatcher
  & lt; !——默认匹配所有的请求——比;
  & lt; url-pattern>/& lt;/url-pattern>
  & lt;/servlet-mapping>  
  

值的注意的是contextConfigLocation和DispatcherServlet(用此类来拦截请求)的引用和配置。

  

1.2 spring-web.xml   

 <代码> & lt; !——配置SpringMVC——比;
  & lt; !——1。开启SpringMVC注解模式——比;
  & lt; !——简化配置:
  (1)自动注册DefaultAnootationHandlerMapping, AnotationMethodHandlerAdapter
  (2)提供一些列:数据绑定,数字和日期的格式@NumberFormat @DateTimeFormat, xml、json默认读写支持
  ——比;
  & lt; mvc:注解驱动/比;
  
  & lt; !——2 .静态资源默认servlet配置
  (1)加入对静态资源的处理:js, gif, png
  (2)允许使用“/弊稣逵成?
  ——比;
  & lt; mvc: default-servlet-handler/比;
  
  & lt; !——3。配置jsp显示ViewResolver——比;
  & lt; bean类=皁rg.springframework.web.servlet.view.InternalResourceViewResolver”比;
  & lt;属性名=" viewClass " value=" https://www.yisu.com/zixun/org.springframework.web.servlet.view.JstlView "/比;
  & lt;属性名="前缀" value=" https://www.yisu.com/WEB-INF/jsp/"/比;
  & lt;属性名="后缀" value=" https://www.yisu.com/zixun/.jsp "/比;
  & lt;/bean>
  
  & lt; !——4。扫描web相关的bean——比;
  & lt;上下文:component-scan基础包=" com.xxx.fantj。网络”/祝辞 
  

值的注意的是InternalResourceViewResolver,它会在ModelAndView返回的试图名前面加前缀前上缀,在后面加载后缀指定后缀。

  

SpringMvc主支源码分析
引用《春天在行动》中的一张图来更好的了解执行过程:
面试官:你分析过SpringMvc的源码吗?”> <br/> <img src=面试官:你分析过SpringMVC的源码吗?