核心组件详解
前端控制器 - 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)
-