RequestProcessorChain:
参照的是之前学习Spring的时候经常遇到的责任链模式的后置处理器。该类中保存了RequestProcessor的多个实现类,之所以会有多个不同的实现类是因为DispatcherServlet是项目中所有请求的唯一入口,这些请求中即会有获取JSP页面的请求也会有获取静态资源的请求,同时还会有直接获取json数据的请求等等。针对不同的资源请求会使用不同的RequestProcessor处理。在RequestProcessor矩阵里面会按照顺序依次去执行他们。
RequestProcessor矩阵:
PreRequestProcessor:该处理器主要负责对请求的编码以及路径作一些前置性的处理。是一个必须要执行的处理器
StaticResourceRequestProcessor:该处理器主要负责对静态资源请求,如图片、css、js等资源的请求进行处理
JspRequestProcessor:该处理器主要负责对JSP页面的访问请求进行处理(如果不经过Contoller方法的转发直接访问某个jsp页面,相关的请求就是该类处理)
ContollerRequestProcessor:该处理器主要负责对将请求派发到对应的Contoller方法里进行处理
Render矩阵:处理器链执行完之后呢(当请求处理成功后),就会调用特定的实现了ResultRender接口的实现类,对处理结果进行展现
DefaultResultRender:如果用户只需要返回一个成功的状态码,则可以选择该Render进行渲染
JsonResultRender:如果用户发生的请求是想要获取json格式的返回结果,则可以选择该Render进行渲染
ViewResultRender:针对页面的渲染需求,则可以选择该Render进行渲染(类似modelAndView对象)
InternalErrorResultRender:针对程序的异常,需要有专门的内部异常渲染器对结果进行处理,则可以选择该Render进行渲染
ResourceNotFoundResultRender:针对请求资源无法找到的情况,则可以选择该Render进行渲染
原文:https://www.cnblogs.com/zcl1116/p/14483393.html