SpringMVC的核心组件
记住了核心组件,工作原理也就顺理成章可以推导出来了。
DispatcherServlet
:核心中央处理器,负责接收请求、分发,并给予客户端相应HandlerMapping
:处理器映射器,根据URL去匹配查找能处理的Handler
,并会将请求涉及到的拦截器和Handler
一起封装HandlerAdapter
:处理器适配器,根据HandlerMapping
找到的Handler
,适配执行对应的Handler
Handler
:请求处理器,处理实际请求的处理器ViewResolver
:视图解析器,根据Handler
返回的逻辑视图 / 视图,解析并渲染真正的视图,并传递给DispatcherServlet
相应客户端
SpringMVC的工作原理
流程说明:
- 客户端(浏览器)发送请求,
DispatcherServlet
拦截请求 DispatcherServlet
根据请求信息调用HandlerMapping
。HandlerMapping
根据URL去匹配查找能处理的Handler
(即Controller),并会将请求涉及到的拦截器和Handler一起封装DispatcherServlet
调用HandlerAdapater
适配器执行Handler
Handler
完成用户请求的处理后,返回一个ModelAndView
对象给DispatcherServlet
ViewResolver
会根据逻辑View
查找实际的View
DispatcherServlet
把返回的Model
传给View
(视图渲染)- 把
View
渲染结果返回给客户端(浏览器)
参考:https://www.jianshu.com/p/8a20c547e245
如何处理统一异常处理
推荐使用注解的方式统一异常处理,具体会使用到
@ControllerAdvice
+ @ExceptionHandler
这两个注解 。
|
这种异常处理方式下,会给所有或者指定的 Controller
织入异常处理的逻辑(AOP),当 Controller
中的方法抛出异常的时候,由被@ExceptionHandler
注解修饰的方法进行处理。
ExceptionHandlerMethodResolver
中
getMappedMethod
方法决定了异常具体被哪个被
@ExceptionHandler
注解修饰的方法处理异常。
/** |