使用tomcat启动的springmvc流程。(自己简要总结)

本文简要总结了SpringMVC在Tomcat中的启动流程。当Tomcat启动时,它读取web.xml配置文件,加载DispatcherServlet作为前端与Controller之间的桥梁。DispatcherServlet处理所有请求并分发给合适的Servlet。配置文件的读取采用DOM方法,Tomcat识别自带标签,第三方标签由Spring jar包处理。SpringMVC启动类读取配置,扫描指定包下带@Controller注解的类,将@RequestMapping注解映射为URL。请求到达时,Tomcat将请求传递给DispatcherServlet,根据URL从HashMap中获取并执行相应的方法。控制器方法的参数可以通过反射与请求参数匹配,实现参数对象的填充。

启动tomcat
当tomcat启动之后,tomcat会自动读取web.xml配置文件(约定)。首先读取DispatcherServlet,还有其他配置文件的路径。

DispatcherServlet的作用:使用springMVC时,java和前端对接的是Controller,而tomcat并不识别Controller,无法和前端沟通,所以需要一个中介。tomcat是支持访问servlet的,所以中介就是DispatcherServlet。由于dispatcherServlet和controller都是第三方开发人员编写的,所以dispatcherServlet里的doGet和doPost里写上controller的相关java代码。在web.xml里配置,目的是把所以请求打到dispatcherServlet上。交给servlet负责分发。

读取其他配置文件目的:是把其他配置文件合到web.xml里来。读取配置文件的方式是java的DOM方法。在配置文件中有些是javaEE自带的,有些是第三方标签。自带的标签tomcat可以直接识别,而第三方的标签是用spring的jar包去识别。配置文件里有spring的j启动类的包路径。当tomcat读到包路径的时候,包的路径是按约定在web.xml中注册的。tomcat在启动过程中,会用DOM操作读取这些标签,看有哪些路径。按约定,凡是在这个标签里的路径都会提取出来进行反射。反射拿到类信息之后再通过newInstance拿到类实例。再通过代理的方式对他们进行执行。执行主方法引起一连串的执行。

在springMVC的启动类中会读取web.xml文件,用DOM操作读取自定义标签。其中自定义标签里有controller的扫描范围。当读取扫描范围之后,springMVC去包下面扫描所有文件。把.class文件全挑出来,根据路径进行反射。获取每个类的class类信息,挑选出带有controller注解的类的类信息。再把类里带有requestMapping注解的方法挑出来,把类上的requestMapping注解的value值和方法上requestMapping注解的value值拼成一个url,通过newInstance获取类实例,同时也获取方法实例,然后以url为key,以方法实例做value存入hashmap。

请求流程:

tomcat接收到请求后,没办法把请求塞给controller的,所以会把请求发给Dispatcherservlet(参照tomcat原理),接收的还是httprequest。dispatcherServlet会从请求中提取url,根据提取的url去hashmap中进行匹配,匹配成功,拿出实例,进行代理去执行相应的Method方法。

controller方法的入参可以是对象类型,(httprequest参数如何转化成对象?)借助的是java反射。将参数对象进行反射,跟请求参数进行匹配,key一样就把请求参数value赋值给对象的域的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值