Spring之我见 - Spring MVC重要组件和基本流程
核心组件详解
前端控制器 - DispatcherServlet
-
作用:所有请求的入口,负责请求分发和协调组件。
public class DispatcherServlet extends HttpServlet {// 核心服务方法protected void doService(HttpServletRequest request, HttpServletResponse response) {// 请求处理主流程}
}
处理器映射 - HandlerMapping
-
作用:根据请求 URL 匹配对应的处理器(Controller 方法)。
-
实现类:
-
RequestMappingHandlerMapping
:处理@RequestMapping
注解。 -
BeanNameUrlHandlerMapping
:根据 Bean 名称匹配 URL。
-
处理器适配器 - HandlerAdapter
-
作用:调用具体的处理器方法,并处理参数绑定和返回值。
public interface HandlerAdapter {boolean supports(Object handler);ModelAndView handle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception;
}
-
关键实现:
-
RequestMappingHandlerAdapter
(处理@Controller) -
HttpRequestHandlerAdapter
(处理Servlet API)
-
-
参数解析:通过
HandlerMethodArgumentResolver
解析方法参数(如@RequestParam
,@PathVariable
)。
视图解析器 - ViewResolver
-
作用:将逻辑视图名(如
"home"
)解析为实际视图(如 JSP、Thymeleaf)。 -
典型实现:
InternalResourceViewResolver
(JSP) -
配置示例:
@Bean public InternalResourceViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/");resolver.setSuffix(".jsp");return resolver; }
JSON响应处理机制
大部分时候我们使用的是JSON作为数据返回,这时候就不是ViewResolver作为返回解析,JSON 返回和视图返回在结果处理阶段完全分离,前者走消息转换器HttpMessageConverter,后者走视图解析器ViewResolver。
核心组件 - HttpMessageConverter
public interface HttpMessageConverter<T> {boolean canRead/Write(Class<?> clazz, MediaType mediaType);T read(Class<? extends T> clazz, HttpInputMessage inputMessage);void write(T t, MediaType contentType, HttpOutputMessage outputMessage);
}
-
常用实现:
-
MappingJackson2HttpMessageConverter
(JSON) -
Jaxb2RootElementHttpMessageConverter
(XML)
-