前言:tomcat 诞生时间比框架早,因此tomcat只识别servlet,所以tomcat不能直接与controller交互。
启动
- 在web.xml中声明启动类,tomcat会通过web.xml来定位要启动的类,首先在web.xml中进行注册,实质上注册的时候启动类。
- 在tomcat启动之后,tomcat会通过dom操作读取xml配置文件(Java读取xml配置文件就是dom操作)
- 通过dom操作获取框架启动类的路径。
- 通过反射拿到启动类的实例,然后通过代理调用主方法,由此触发框架自定义类的启动。
- 当自定义类启动之后,会扫描根目录下的子文件,把java文件都会筛选出来
- 筛选之后通过路径进行反射,反射之后通过反射信息看哪些带有自定义的@controller注解。
- 把带有注解的类挑选出来之后,再去挑选带有注解的方法。把带有@requestmapping的方法挑选出来。
- 挑选出来之后挑选出来注解里面的路径值。把路径值作为Key,方法的实例作为value存到HashMap中。(启动完毕)
atcherServlet会把内部路径提取出来,这个内部路径就是controller里面resquesemapping里的路径,当拿到这个路径之后会从HashMap里匹配,拿到对应的方法实例,用java的代理去执行,就是invoke方法。invoke有三个参数(要执行的方法所属的对象实例,方法实例,入参(通过httpresquest里获得))。
- 启动完成后等待前端请求,当前端发送请