HandlerMapping:定义了web请求映射和处理器(Handler)之间的映射
类结构:
handler的种类:
Servlet
Controller
HttpRequestHandler (Spring Invoke)
Bean (@RequestMapping)
顶层抽象:
AbstractHandlerMapping:支持sort,默认handler,handler interceptors;关联ApplicationContext ;封装HandlerExecutionChain
URL匹配:
- AbstractUrlHandlerMapping:支持注册url->hander的映射(直接,模糊);handerName->handlerBean;
- AbstractDetectingUrlHandlerMapping:支持从application context中自动发现 handler;启动初始化
- AbstractControllerUrlHandlerMapping:支持判断是否实现 Controller接口,或者Controller 注解修饰
HandlerMethod匹配:
- AbstractHandlerMethodMapping:实现 request和HandlerMethod的映射及注册;InitializingBean 启动初始化
- RequestMappingHandlerMapping: 实现url->RequestMappingInfo->HandlerMethod的映射
具体实现:
- SimpleUrlHandlerMapping:支持直接配置,调用父类注册
- BeanNameUrlHandlerMapping:支持以 /beanName->beanName 的形式注册
- ControllerBeanNameHandlerMapping:
- ControllerClassNameHandlerMapping:
- RequestMappingHandlerMapping:
- DefaultAnnotationHandlerMapping:已经废弃
默认策略:
DispatcherServlet.properties 默认配置:BeanNameUrlHandlerMapping,DefaultAnnotationHandlerMapping
<mvc:annotation-driven/>配置:RequestMappingHandlerMapping,BeanNameUrlHandlerMapping
<mvc:default-servlet-handler/>配置:SimpleUrlHandlerMapping
<mvc:annotation-driven/>配置:SimpleUrlHandlerMapping(Controller接口)
<mvc:view-controller/> 配置: SimpleUrlHandlerMapping (ParameterizableViewController实现类)
DispatcherServlet初始化策略:
private void initHandlerMappings(ApplicationContext context) { this.handlerMappings = null; if (this.detectAllHandlerMappings) { // Find all HandlerMappings in the ApplicationContext, including ancestor contexts. Map<String, HandlerMapping> matchingBeans = BeanFactoryUtils.beansOfTypeIncludingAncestors(context, HandlerMapping.class, true, false); if (!matchingBeans.isEmpty()) { this.handlerMappings = new ArrayList<HandlerMapping>(matchingBeans.values()); // We keep HandlerMappings in sorted order. OrderComparator.sort(this.handlerMappings); } } else { try { HandlerMapping hm = context.getBean(HANDLER_MAPPING_BEAN_NAME, HandlerMapping.class); this.handlerMappings = Collections.singletonList(hm); } catch (NoSuchBeanDefinitionException ex) { // Ignore, we'll add a default HandlerMapping later. } } // Ensure we have at least one HandlerMapping, by registering // a default HandlerMapping if no other mappings are found. if (this.handlerMappings == null) { this.handlerMappings = getDefaultStrategies(context, HandlerMapping.class); if (logger.isDebugEnabled()) { logger.debug("No HandlerMappings found in servlet '" + getServletName() + "': using default"); } } }
相关推荐
4. **ActionMapping**:映射Action和URL的关系,类似Spring MVC的HandlerMapping。 5. **Tiles**:视图组件,帮助构建复杂的页面结构。 四、`spring-webmvc-struts.jar`的关键功能 1. **StrutsPlugIn**:这个类是...
《Spring MVC 展示应用深度解析》 Spring MVC 是 Spring 框架的重要组成部分,它为构建基于模型-视图-控制器(MVC)模式的Web应用程序提供了强大的支持。"spring-mvc-showcase"项目是Spring官网提供的一个实战示例...
《Spring Web MVC 5.0.9:深度解析与应用》 Spring Web MVC是Spring框架的核心模块之一,专为构建Web应用程序提供模型-视图-控制器(MVC)架构支持。在Spring 5.0.9这个版本中,它延续了Spring对开发者友好、灵活且...
2. servlet-context.xml:Spring MVC的配置文件,用于配置视图解析器、HandlerMapping、HandlerAdapter等。 3. applicationContext.xml:Spring的上下文配置文件,通常用于配置bean,如Service、DAO等。 4. ...
它包括了DispatcherServlet、ModelAndView、ViewController、HandlerMapping、HandlerAdapter等关键组件,为Web开发提供了强大的工具。 这些jar包的使用通常涉及以下知识点: 1. **依赖注入**:理解如何通过XML...
Spring Web MVC是Spring框架的一个重要模块,主要用于构建Web应用程序的后端控制器。在这个"spring-webmvc-3.2.5.RELEASE"版本中,我们聚焦于Spring 3.2.5这一稳定版本,它提供了丰富的功能和改进,以支持开发者构建...
在Spring Web MVC Portlet的配置中,我们需要定义portlet的配置类,创建DispatcherPortlet实例,并配置处理器映射器(HandlerMapping)和视图解析器(ViewResolver)。此外,还需要在portlet-context.xml中配置...
7. **HandlerMapping**和**HandlerAdapter**:这两者是Spring MVC的内部组件,HandlerMapping负责将URL映射到合适的处理器,HandlerAdapter则负责调用控制器的方法。 8. **ViewResolver**:视图解析器的作用是根据...
1. **配置文件**:Spring MVC的配置文件(如`web.xml`和`spring-servlet.xml`)中包含了各种组件的定义,包括DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver等。通过分析配置,我们可以了解其...
3. **HandlerMapping与HandlerAdapter**: 这两个组件负责映射HTTP请求到合适的处理器方法。Spring Web MVC 3.1.1提供了更灵活的策略,包括基于注解的映射和基于类的映射,使得处理器方法的选择更加智能化。 4. **...
《Spring MVC 框架深度探索与实践》 在当今的Java Web开发领域,Spring MVC框架无疑是最为流行和广泛使用的MVC(Model-View-Controller)架构之一。本资料"spring-mvc-demo.zip"旨在深入解析Spring MVC的核心概念、...
- `dispatcher-servlet.xml`:主要配置Spring MVC的组件,如HandlerMapping、Controller、ViewResolver等。 - `applicationContext.xml`:配置业务逻辑组件,如Service、DAO以及它们之间的依赖关系。 4. **请求...
它通过配置的 HandlerMapping 映射 URL 到控制器,然后由 HandlerAdapter 调用控制器方法处理请求。 4. **控制器与模型-视图-模型**:控制器是处理请求的核心,通常以 @Controller 注解的类实现。它们通过 @...
**标题:“AngelRM_MVC-master.zip”** **描述:**这个压缩包文件“AngelRM_MVC-master.zip”包含了一个基于SpringMVC的MVC(Model-View-Controller)系统的基础项目源码,专为初学者设计,用于学习和理解MVC架构...
《Spring MVC 框架深度解析与实践指南》 在当今的Java Web开发领域,Spring MVC作为Spring框架的重要组成部分,已经成为了构建MVC(Model-View-Controller)模式应用程序的主流选择。本教程将深入剖析Spring MVC的...
《Spring MVC 深入浅出教程》 在IT领域,Spring MVC作为Spring框架的重要组成部分,是企业级Java应用开发中的主流MVC(Model-View-Controller)框架。本教程将通过逐步指导的方式,帮助开发者深入理解并掌握Spring ...
- **MVC 配置**:XML 和 Java 配置方式的 MVC 配置示例,包括 HandlerMapping、HandlerAdapter、ViewResolver 等。 通过深入学习和实践这个项目,开发者不仅可以掌握 Spring MVC 的基本操作,还能了解如何进行高级...
**MVC 模式简介** MVC(Model-View-Controller)模式是一种广泛应用于Web应用程序设计的架构模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种分离使得代码更加组织...
3. **HandlerMapping**:该接口负责将请求与处理器(Controller)进行匹配,Spring MVC 提供了多种实现,如基于注解的 HandlerMapping,可以根据 @RequestMapping 注解将 URL 映射到控制器方法。 4. **...