一、Spring MVC框架的基本执行流程是什么?
(1)用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet拦截。
(2)DispatcherServlet拦截到请求后,会调用HandlerMapping(处理器映射器)。
(3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
(4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)。
(5) HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器。
(6)Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名。
(7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet。
(8)前端控制器请求视图解析器根据逻辑视图名解析真正的视图。
(9)ViewResolver解析后,会向DispatcherServlet中返回具体的View(视图)。
(10)DispatcherServlet将ModelAndView请求试图解析器(ViewResolver)进行解析
(11)前端控制器向用户响应结果。
二、Spring MVC中实现Controller的方式有几种?
Spring MVC中实现Controller的方式有三种:
(1)注解方式:
使用@Controller注解标记一个类作为Controller,并使用@RequestMapping注解标记 Controller中的方法来处理请求。在applicationContext-mvc.xml中配置—开启对SpringMVC注解的支持 配置包的扫描(具体到哪个路径下去扫描@Controller)
注:需要加上spring-aop.jar包
(2)实现接口方式:
实现HttpRequestHandler接口,并 且在Springmvc的配置文件中配置这个bean,指定DemoController的访问路径,配置applicationContext-mvc.xml文件,配置bean交给Spring来管理
创建一个类实现Controller接口实现handleRequest方法, 并且在Springmvc的配置文件中配置这个bean,指定Controller的访问路径
(3)继承方式:
继承AbstractController抽象类或者实现Controller接口的子类来定义Controller,并重写handleRequest方法来处理请求。