目录
1、什么是MVC模式
MVC可以理解为一种设计模式,模型(model)-视图(view)-控制器(controller)的缩写,属于Spring框架的一个模块。SpringMVC框架是以请求为驱动,围绕Servlect设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图
2、SpringMVC核心组件
(1)前端控制器DispatcherServlect(不需要开发,框架提供)
作用:Spring MVC 的入口函数,接收请求响应结果,相当于“中央处理器”,相当于MVC中的C,由它调用其他组件处理用户请求,降低了组件之间的耦合。
(2)处理器映射器HandlerMapping(不需要开发,框架提供)
作用:根据用户请求的URL查找Handler处理器(Controller)。
(3)处理器适配器handlerAdapter(不需要开发,框架提供)
作用:按照特定规则按去执行Handler处理器,是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
(4)处理器Handler(需要开发)
(也就是Controller控制器)
类似于DispatcherServlect前端控制器的后端控制器,在DispatcherServlect控制下,Handler对具体用户请求进行处理。
(5)视图解析器View resolver(不需要开发,框架提供)
作用:进行视图解析,根据逻辑视图名解析成真正的视图(view),负责处理结果生成View视图对象,最后通过View渲染处理结果通知页面展示给用户。
(6)视图View(需要开发)
View是一个接口,实现类支持不同的View类型
注意:处理器Handler和View都需要自己开发
3、SpringMVC工作原理/请求处理流程
(前端控制器--->处理器映射器--->处理器适配器--->处理器-->modelAndView-->视图解析器-->视图)
(1)客户端发送请求,前端控制器DispatcherServlect接受客户端请求
(2)控制器通过处理器映射器HandlerMapping找到对应的处理器,然后使用处理器适配器handlerAdapter来真正调用处理器处理请求
(3)处理器处理完请求后,会返回一个ModelAndView对象
(4)控制器通过视图解析器View Resolver找到对应的视图,最终将模型数据渲染为最终的视图返回给客户端
4、SpringMVC异常如何处理
@ControllerAdvice注解定义全局异常处理类,可以捕获所有Controller中抛出的异常,并对异常进行统一的处理;使用@ExceptionHandler注解处理特定的异常
5、SpringMVC中拦截器
是一种类似于过滤器的组件,它可以在请求处理的前后执行一些自定义的逻辑。基于HandlerInterceptor接口,它定义了三个方法:
(1)preHandle():请求处理之前被调用
(2)postHandle():请求处理之后、视图渲染之前被调用
(3)afterCompletion():整个请求处理完成后被调用,无论是否有异常都执行