![830d1621441d2d6193e5755f8c005845.png](https://i-blog.csdnimg.cn/blog_migrate/e1a3affa77996ea05301ce9f0bf92e1a.jpeg)
springMVC简单程序流程分析
第一部分
1.启动服务器,加载web.xml
当启动服务器的时候,就会加载web.xml文件,载入下面这段代码
dispatcherServletorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:applicationContext.xml1dispatcherServlet*.do12345678910111213
2.创建dispatcherServlet对象
当有load-on-startup标签的时候,1表示servlet会在服务器启动的时候加载,
11
tomcat中就会有一个dispatcherServlet对象,然后调用init方法,根据name参数名获取value参数值,根据spring的配置路径就会去加载spring的配置文件,同时创建spring核心容器
3.创建spring核心容器,生成对象
在配置文件applicationContext.xml中,载入下面这段代码
123456
根据component-scan标签,去扫描base-package路径下的所有的类和其中的类上的注解,比如Controller类中的@Controller或@RestController,Service类中的@Service注解,并进行IOC控制反转和DI依赖注入,生成对应的对象,存储在spring核心容器中.而导入application-mybatis.xml则是为了整合mybatis
如果需要使用视图解析器时,也会在spring核心容器中生成视图解析器对象
123456
此时第一部分结束了,而在我们的spring核心容器中生成了3个对象.分别是controller对象,scervice对象,viewResolver对象
第二部分
1.客户端发送请求
http://localhost:8080/aaa/bbb.do1
还记得web.xml文件中的servlet-mapping标签吗,当url-pattern为*.do时,映射路径则以.do后缀,当url-pattern为 / 时,则表示没有后缀
dispatcherServlet*.do1234
回到客户端发送请求上面,这段请求会被dispatcherServlet对象接收并分发.它会截取.do之前的/aaa/bbb部分,并去Controller类中匹配对应@RequestMapping注解的值.找到对应的方法.
2.执行Controller类中对应的方法
执行方法,如果需要请求转发跳转页面,则会在spring核心容器中找到视图解析器对象,配置前后缀,并找到对应的页面进行跳转.显示最终的网页数据.
小结
本案例为简单程序的springMVC流程分析,具体的springmvc请求响应执行流程中,除了前端控制器DispatcherServlet,视图解析器ViewResolver外,还有处理器映射器HandlerMapping,处理器适配器HandlerAdapter分别执行程序,显示出最终的视图.