架构分析
页面流程
业务分析:客户端向服务端发送一个请求,发向了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就会有了上树的过程