先来张图说明一下咱们的一般的网络请求都走的过程:
1、客户端访问域名
经过DNS解析后,域名被映射到服务器的某一端口(解析的时候就已经约定好的),那么为什么不用一个端口去跑多个网站呢,那么就涉及到了我们的域名,域名一般都只会运行一个网站,而且对于一个端口对应一个网站也是比较好控制的,因为不想让用户访问某一网站时只需要将对应的端口关闭即可。
2、服务器端接收到http请求
tomcat通过调用操作系统的一些方法,定时的(轮询方式)向端口请求信息,这里就用到了socket技术,当有信息传来之后Tomcat进行解析。
3、Tomcat解析
tomcat根据xml里边的配置信息,解析到相应的端口,访问具体项目。
4、spring项目执行
Spring扫描技术:
web项目执行的第一个操作就是取找web.xml文件,因为这是所有web项目启动的必备配置,在xml里配置Spring的相关配置,这样每次项目启动的时候就会调用相应的jar包并且去读取相应的配置文件,而Spring最重要的技术就是asm扫描技术,扫描技术用来扫描我们的类。
Spring注解:
注解用来标记需要扫描的类,即用来告诉Spring扫描器需要扫描的类,扫描完成后将扫描出来的类放到内存中的特定Spring容器中,然后对于注解里边的值(例如@RequestMapping("/abc")),会将他的值以key和对应的类的存储路径为value的形式存入到内存的map表中,方便程序运行时通过路径定位类。
反射加代理:
前边说的只是spring能定位到类的路径了,但是关于如何实例化类和访问相应的方法,我们就得用到反射来获取类,用代理去实现调用相应的方法。
领取专属 10元无门槛券
私享最新 技术干货