SSM

本文详细解析了SSM项目的传统XML配置实现,从Tomcat的启动流程到Servlet的处理,深入剖析了web.xml元素解析、Tomcat容器搭建以及请求响应的全过程。通过代码调试和源码分析,阐述了DispatcherServlet的九大组件及其初始化策略,并介绍了请求从接收至返回数据的整个Java源码流程。
摘要由CSDN通过智能技术生成

使用传统的xml形式的SSM实现一遍,描述大致流程

代码地址:

https://gitee.com/chenscript/mybatis_learning.git

前言、tomcat是如何实现servlet的?

将SSM项目用tomcat启动,你会看到日志的第一行是

D:\tomcat8.5.50\apache-tomcat-8.5.50\bin\catalina.bat run
[2019-12-28 10:20:09,678] Artifact SSM:war exploded: Waiting for server connection to start artifact deployment…
Using CATALINA_BASE: “C:\Users\Administrator.IntelliJIdea2017.3\system\tomcat\Unnamed_parent”
Using CATALINA_HOME: “D:\tomcat8.5.50\apache-tomcat-8.5.50”
Using CATALINA_TMPDIR: “D:\tomcat8.5.50\apache-tomcat-8.5.50\temp”
Using JRE_HOME: “D:\Java\jdk1.8.0_161”
Using CLASSPATH: “D:\tomcat8.5.50\apache-tomcat-8.5.50\bin\bootstrap.jar;D:\tomcat8.5.50\apache-tomcat-8.5.50\bin\tomcat-juli.jar”

这里就是我们的入口:catalina.bat 。 在代码里,你会发现实质启动的是tomcat的一个类:Bootstrap。
tomcat Bootstrap源码:
在这里插入图片描述

如何调试tomcat源码? --> 直接在Bootstrap中右键运行main()就好了。(记得ant-build一下)
参考链接:

https://blog.csdn.net/yekong1225/article/details/81000446

有些单元测试会报错,但是可以注释掉。

tomcat是最腰间盘突出的设计模式就是状态设计模式(参考start()方法),采用netty方式实现获取请求,发送请求的。

直奔主题吧。tomcat如何实现servlet的?
先看tomcat容器关系图:
在这里插入图片描述
来自极客时间的图。

可以看到Servlet是在最底层的,所以跟着代码走,直接找到Wrapper的代码。假设代码使用的是JSP,那么这个Wrapper就是JspServletWrapper。(因为在tomcat代码有这包,方便看代码)
如果认真起来找的话,还追溯到这些类上,跟着上面的图一个个套进去找吧。
在这里插入图片描述
可以参考调用栈这里一步步调试。
在这里插入图片描述
在JspServlet的init()方法中,核心方法是

wrapper.service(request, response, precompile);<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值