MVC的执行流程
1.执行服务器
根据配置创建DispatcherServlet
对象。这个对象已创建,会根据contextConfigLocation
的配置查找springmvc.xml
文件
根据文件中的配置扫描包下的所有类
根据@Controller
注解,创建**Controller类的对象,并且创建Spring容器,将这个对象放在Spring容器中。
springMvc还会扫描Controller类中注解了@RequestMapping
的方法。将对应的方法和controller全部记录在内。
2.发送请求到tomcat
进入tomcat,会被DispatcatherServlet
(核心前端控制器)接收。
DispatcherServlet接受请求后,会解析请求,得到url(地址)。
然后查找所有的记录好的映射器对象(@RequestMapping注解),找出映射的url是对应的映射地址。调用对应的方法(Service层)处理请求。
3.响应客户端
当service方法执行完后。会有一个返回值,假设返回了一个字符串,DispatcherServlet会根据访问的结果响应给客户端。这里返回是一个字符串,并且由于注解了@ReponseBody,SpringMvc会直接使用输出流将返回的字符串返回给客户端。
总结
- 用户通过浏览器向服务器发送服务请求,请求会被Spring MVC的前端控制器 DispatcherServlet拦截。
- DsipatcherServlet拦截请求后,会调用HandlerMapping处理器处理映射。
- 处理器根据URL找到具体的处理器,生成处理器对象 及 处理器拦截器,一并返回给DispatcherServlet
- DispatcherServlet会通过返回的信息选择合适的HandlerAdapter
- HanandlerAdapter会调用执行Handler(处理器) 也就是Controller。
- Controller执行玩后会返回一个ModelAndView对象,对象包含试图名或包含模型和视图名。
- HandlerAdpater将返回值返回给DispatcherServlet
- DispatcherServlet会根据ModelAndView选择一个合适的视图解析器。
- 返回给前端浏览器。