前言

虽然从学java的第一个程序——helloworld至今,已经有好几个年头了。当时自己找资料,看视频,学习了java的输入输出流,多线程,网络编程等等, 而三大框架(Struts、Hibernate、Spring)基本只是开了个头就出来实习了,尤其对于Spring更是没有进行系统的学习, 虽然在实习的时候通过看项目,基本明白了spring mvc编程的框架是怎么回事,遇到需求知道如何写代码,在哪写代码,但是还是缺乏一个系统的认识。
因为最近公司项目使用 struts2 作为控制层框架,为了实现前后端分离,计划将 struts2 切换为 SpringMVC ,因此,这段时间都在学习新的框架,《Spring实战》是一本好书,里面对 Spring 的原理实现以及应用都说得很透彻,强烈推荐,但是如果想深挖 Spring 的实现,还是要从他的源码入手,这次,就先从 SpringMVC 初始化开始。
Web容器初始化过程
web容器初始化的过程,其官方文档给出了这样的描述:
其初始化的过程实际如下:
SpringMVC 的 web.xml配置
web.xml 配置代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
在 Servlet API中有一个ServletContextListener接口,它能够监听ServletContext对象的生命周期,实际上就是监听Web应用的生命周期。当Servlet容器启动或终止Web应用时,会触发ServletContextEvent事件,该事件由ServletContextListener来处理。在ServletContextListener接口中定义了处理ServletContextEvent 事件的两个方法contextInitialized()和contextDestroyed() 。
ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置了这个监听器,启动容器时,就会默认执行它实现的方法。由于在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。
DispatchServlet初始化
在SpringMVC架构中,DispatchServlet负责请求分发,起到控制器的作用。下面详细来解释说明:
init()方法,在这部分,我们可以看到其实现思路:公共的部分统一来实现,变化的部分统一来抽象,交给其子类来实现,故用了abstract class来修饰类名。此外,HttpServletBean提供了一个HttpServlet的抽象实现,使的Servlet不再关心init-param部分的赋值,让servlet更关注于自身Bean初始化的实现initWebApplicationContext()方法和initFrameworkServlet()方法实现DispatchServlet类和ContextLoaderListener类的关系图:
用ContextLoaderListener初始化上下文,接着使用DispatchServlet来初始化WebMVC的上下文
总结
以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# springmvc初始化过程
# springmvc
# 启动初始化
# spring
# mvc
# 初始化
# idea启动springmvc项目时报找不到类的解决方法
# Spring MVC 启动过程源码分析详解
# Spring SpringMVC在启动完成后执行方法源码解析
# Spring MVC启动之HandlerMapping作用及实现详解
# 子类
# 可以看到
# 来实现
# 是一个
# 加载
# 就会
# 出了
# 都在
# 第一个
# 在这
# 中有
# 三大
# 开了
# 这段
# 用了
# 得很
# 两大
# 都说
# 写了
# 因为它
相关文章:
定制建站流程解析:需求评估与SEO优化功能开发指南
教程网站设计制作软件,怎么创建自己的一个网站?
如何通过WDCP绑定主域名及创建子域名站点?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
如何在建站主机中优化服务器配置?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何在Tomcat中配置并部署网站项目?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
学校为何禁止电信移动建设网站?
建站之星24小时客服电话如何获取?
如何快速生成凡客建站的专业级图册?
建站之星在线客服如何快速接入解答?
高防服务器:AI智能防御DDoS攻击与数据安全保障
Java解压缩zip - 解压缩多个文件或文件夹实例
建站之星如何快速生成多端适配网站?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
如何快速搭建高效WAP手机网站吸引移动用户?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何做静态网页,sublimetext3.0制作静态网页?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
自助网站制作软件,个人如何自助建网站?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
建站之星如何防范黑客攻击与数据泄露?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
SQL查询语句优化的实用方法总结
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
如何快速搭建FTP站点实现文件共享?
ui设计制作网站有哪些,手机UI设计网址吗?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
建站主机选哪家性价比最高?
测试制作网站有哪些,测试性取向的权威测试或者网站?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
广州美橙建站如何快速搭建多端合一网站?
高端网站建设与定制开发一站式解决方案 中企动力
浅谈Javascript中的Label语句
建站三合一如何选?哪家性价比更高?
如何在七牛云存储上搭建网站并设置自定义域名?
建站VPS选购需注意哪些关键参数?
网站制作话术技巧,网站推广做的好怎么话术?
javascript中对象的定义、使用以及对象和原型链操作小结
七夕网站制作视频,七夕大促活动怎么报名?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
建站之星代理费用多少?最新价格详情介绍
建站主机选购指南:核心配置优化与品牌推荐方案
*请认真填写需求信息,我们会在24小时内与您取得联系。