springmvc流程_Java-程序员感悟-Spring MVC启动流程

Spring MVC 加载流程

第一关: web.xml 配置文件

下面截取部分web.xml中配置

0457dd5f7ff1a0ad4c93eee8dcd72b4b.png
5555a4a82455c754f98cac5b19a8cb7d.png

从上面可以很容易看出,web.xml 的加载顺序。

第一步 context-param

主要是加载配置, 上下文参数

contextConfigLocation

classpath:applicationContext.xml

第二步 listener

这步开启监听

 org.springframework.web.util.IntrospectorCleanupListenerorg.springframework.web.context.ContextLoaderListenerlistener.SessionListener

2.1 org.springframework.web.util.IntrospectorCleanupListener用来检测处理Introspector内存泄漏问题的辅助类

java.beans.Introspector 这个是JDK中的类,主要用途是检测JavaBean 如果有符合规范的,就会启动一个系统级别的缓存。

有个缺点就是无法被回收,所以spring框架启动了一个 IntrospectorCleanupListener,

就是专门来对付这种内存泄漏问题的。

2.2 org.springframework.web.context.ContextLoaderListener 这个监听器在spring配置中起到非常重要的作用,自动装配ApplicationContext

的配置信息。在web.xml配置的监听器,启动容器时,就会默认执行它实现的方法。

如第一步添加的 contextConfigLocation ,就是在这步进行自动装配和加载的。 默认的加载路径:

/WEB-INF/applicationContext.xml 也可以添加自定义的。可以用通配符来加载:

/WEB-INF/class/applicationContext-*.xml

第三步 filter

 encodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceEncodingtrue

这步可以加载很多过滤器,也可以自定义过滤器。 这里加载的是spring的字符集过滤器。

和前台交互的时候,会有不同的字符集,提交到后端 ,甚至出现乱码。

这个类就是来处理这种乱码的。

重要参数:forceEncoding 这个设置了true,强制所以的请求响应都使用encoding编码。

定位问题的时候,出现无论怎么设置,总乱码,可以检测下这个小开关。

第四步 servlet

 springmvcorg.springframework.web.servlet.DispatcherServlet1springmvc*.do

4.1 DispatcherServlet 是Spring MVC 的控制层

4.2 从下向上的关系如下

6602111f58ffdc63960af9d9cddaf933.png

4.3 可以看到 DispatcherServelet 类的本质还是Servlet,这个是由于web容器启动后首先调用的就是Servlet初始化 init 的方法。

4.4 DispatchServelet 被创建和继承如下:

a09bfc97c556d648a4b75cc3c3e05e32.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值