Spring MVC入口Servlet原理简介说明(HttpServletBean,FrameworkServlet,DispatcherServlet)

java-教程王 SpringMVC 发布时间:2021-12-14 14:33:21 阅读数:3803 1
下文笔者讲述Spring MVC中Servlet的转发原理,如下所示:
 Spring MVC中DispatcherServlet前端控制器是web服务器的入口,它的继承关系,如下图所示:

各类的功能,如下所示:
  1. HttpServletBean
    主要做一些初始化的工作,
    将web.xml中配置的参数设置到Servlet中
    如servlet标签的子标签init-param标签中配置的参数
  2. FrameworkServlet
    将Servlet与Spring容器上下文关联
    其实也就是初始化FrameworkServlet的属性webApplicationContext
    这个属性代表SpringMVC上下文
    它有个父类上下文
    既web.xml中配置的ContextLoaderlistener监听器初始化的容器上下文
  3. DispatcherServlet
    初始化各个功能的实现类
    如异常处理、视图处理、请求映射处理等
初始化 HttpSerlvetBean继承自HttpServlet,它覆写了init方法,并留出了一个空方法initServletBean(),供子类重写

HttpSerlvetBean初始化

web.xml配置
<servlet>
  <servlet-name>dispatcher</servlet-name>  
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  <load-on-startup>1</load-on-startup>  
  <init-param>
    <param-name>contextConfigLocation</param-name>  
    <param-value>classpath:springConfig/dispatcher-servlet.xml</param-value>  
  </init-param>
</servlet>

<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>  
  <url-pattern>/</url-pattern>  
</servlet-mapping>

覆写initServletBean

FrameworkServlet继承自HttpServletBean,该类覆写的initServletBean方法
并留出空方法initFrameworkServlet()供子类扩展

initWebApplicationContext方法的具体实现逻辑:
FrameworkServlet中initWebApplicationContext源码 FrameworkServlet中initWebApplicationContext源码
web.xml配置 
<context-param>
  <param-name>contextConfigLocation</param-name>  
  <param-value>classpath:springConfig/applicationContext.xml</param-value>  
</context-param>
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
</listener>
web.xml中配置的ContextLoaderListener监听器中根据contextConfigLocation路径生成的上下文。

覆写onRefresh

DispatcherServlet覆写了FrameworkServlet中的onRefresh方法
DispatcherServlet覆写onRefresh
initStrategies方法内部会初始化各个策略接口的实现类,包括以下接口
  1. 异常处理初始化initHandlerExceptionResolvers方法:SpringMVC异常处理机制详解
  2. 视图处理初始化initViewResolvers方法:SpringMVC视图机制详解
  3. 请求映射处理初始化initHandlerMappings方法:详解SpringMVC请求的时候是如何找到正确的Controller
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringMVC/202112/2079.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者