架构剖析


页面流程

业务剖析:客户端向服务端发送一个申请,发向了Tomcat,如果Tomcat只有一个线程是不可能解决多个申请的,所以就须要一个多个线程的池资源,而后线程用I/O读取申请中的数据,而后服务器从http协定中拿到数据,而后把数据封装到request对象中,进行过滤,过滤之后交给springmvc,之后就是springmvc的流程了
在return "starter"处加一个断点,刷新页面debug运行如下

而后走到dispatcherServlet(mvc中的c),当客户端传了一个url当前,c会基于url找到一个处理器,会找到requestmapping,而r外面就相当于有一个map,map里有key和value,当传来的url是key,基于k找v,而v就是前面的collection办法,做了一个映射,collection严格来讲就是一个申请处理器,那那么多处理器怎么找到呢,两头得对应一个映射,而映射就是r,(这个r能够通过点击boot dashboard,再点我的项目 抉择下面的show properties 再点request mapping的path对应的source去查看),找到之后dispatcherServlet就开始基于url的映射,去反射调用controller,而后9在调用办法,办法返回给dispatcherServlet一个view的名字,dispatcherServlet拿到名字当前,当办法的返回值是view的时候,要解析这个view,这个办法谁调用就返回给谁,所以dispatcherServlet拿到了名字,dispatcherServlet拿到名字之后会交给视图解析器解析这个名字,咱们默认应用的解析器是thymeleafViewResolver,所以模板放到了templates上面,这样才能够解析,解析之后加上前缀和后缀,如果还有一部分model数据,还有把model的数据放到view下来
当输出localhost/doIndexUI这个地址的时候,是由DNS服务器解析的域名,拿到一个ip地址(是网络中计算机的惟一标识),基于ip找到网络中的主机,找到服务器,而后会通过端口号(是程序的惟一标识)找到程序,找到了Tomcat,一旦找到了Tomcat就会有了上树的过程