当客户端发出Request的时候DispatcherServlet会将Request提交给HandlerMapping, 然后HanlerMapping根据Web Application Context的配置来回传给DispatcherServlet相应的Controller.
HandlerMapping
1. org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
默认的HanlerMapping 会根据Controller的Bean Name来进行匹配 例如:
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="
/welcome.html" class="me.iace.spring.controller.WelcomeController"/>
当客户端发出http://xxxx/ctx/welcome.html的时候 BeanNameUrlHandlerMapping指向该Controller回传给DispatcherServlet
2. org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping
ControllerClassNameHandlerMapping会根据Controller Bean的Class Name来做匹配 例如:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean name="/hello" class="me.iace.spring.controller.
WelcomeController"/>
例如WelcomeController 会去掉后面的Controller 客户端发出 /welcome的request 会匹配到该Controller, 需要注意的是 如果welcome的第一个字母'w'为大写的话是错误的, 而且后welcome后面不管有什么都会匹配该WelcomeController 例如 ‘/welcome
224sscc’也是可以匹配到该Controller的。
ControllerClassNameHandlerMapping的相关属性 如下
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
<property name="caseSensitive" value="true" />
<property name="pathPrefix" value="/haha" />
<property name="basePackage" value="me.iace.spring.controller" />
</bean>
caseSensitive: 是否识别大小写
pathPrefix: url的前缀,在这里的前缀是 '/haha'
basePackage: 指定匹配哪个package的Controller
再就是可以同时使用 BeanNameUrlHandlerMapping 和 ControllerClassNameHandlerMapping 例如
<bean class="
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="
org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean name="
/hello" class="me.iace.spring.controller.
WelcomeController"/>
当客户端发出 '/hello' 和 '/welcome'的时候都会匹配到该WelcomeController
3. org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
SimpleUrlHandlerMapping会将在自身Properies里设置的Url映射到相关的Controller, 如下:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/welcome">welcomeController</prop>
<prop key="/hello">helloController</prop>
</props>
</property>
</bean>
<bean id="
welcomeController" class="me.iace.spring.controller.WelcomeController" />
<bean id="
helloController" class="me.iace.spring.controller.WelcomeController" />
分享到:
相关推荐
在本篇博客“SpringMVC源码总结(一)HandlerMapping和HandlerAdapter入门”中,我们将探讨Spring MVC框架的核心组件——HandlerMapping和HandlerAdapter。这两个组件是Spring MVC处理请求的关键,它们负责映射HTTP...
org.apache.cxf.spring.remoting.Jsr181HandlerMapping.jar
### Spring MVC核心组件之HandlerMapping详解 #### 一、引言 在Java Web开发领域,Spring MVC框架因其灵活且强大的特性而备受青睐。它提供了一种简洁的方式来构建可维护、可扩展的应用程序。Spring MVC的核心组件之...
HandlerMapping HandlerAdapter View ViewResolver类图 矢量图文件 https://blog.csdn.net/qq_39609993/article/details/105435850
在Spring MVC框架中,HandlerMapping是一个至关重要的组件,它的职责是将HTTP请求映射到相应的处理器(Handler)。在源码解读中,我们关注的是AbstractDetectingUrlHandlerMapping,这是一个抽象类,它通过扫描应用...
本文将深入探讨`HandlerMapping`的工作原理及其在Spring MVC中的作用。 首先,`HandlerMapping`是一个接口,它定义了一个关键方法`getHandler(HttpServletRequest request)`,该方法负责根据请求获取对应的`...
2. 实现HandlerMapping接口,将请求映射到对应的处理器。 3. 实现HandlerAdapter接口,处理控制器方法的调用。 4. 配置异常处理和拦截器机制。 5. 自定义视图解析逻辑。 总结,通过深入理解MVC模式和Spring MVC的...
AbstractUrlHandlerMapping是HandlerMapping的一个抽象实现,它处理基于URL的请求分发。本文将深入探讨AbstractUrlHandlerMapping如何进行request分发,并介绍其核心功能。 首先,我们关注`getHandler`方法,这是...
Spring MVC默认提供了一些内置的HandlerMapping实现,如BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping等。但是,在实际项目中,我们可能需要根据特定需求定制自己的映射规则。通过扩展HandlerMapping接口,...
3. 配置SpringMVC:创建SpringMVC的配置文件,如servlet-context.xml,配置DispatcherServlet、ViewResolver、HandlerMapping等。 4. 配置Mybatis:创建mybatis的全局配置文件,mybatis-config.xml,配置数据源、...
HandlerMapping可以通过配置文件或注解方式进行配置,例如使用"@RequestMapping"注解标注请求映射。 ViewResolver简介 ViewResolver是SpringMVC框架中的视图解析组件,负责将逻辑视图名解析为具体的视图实现。...
HandlerMapping是SpringMVC中的一个重要组件,它负责将用户的请求映射为HandlerExecutionChain对象,包含一个Handler解决器对象和多个HandlerInterceptor拦截器对象。HandlerMapping使用策略模式,使得添加新的映射...
如果配置为false(第13行之后的代码),则只会尝试获取名为`HANDLER_MAPPING_BEAN_NAME`的特定bean,如果没有找到,将忽略异常并稍后添加默认的HandlerMapping。 在Spring MVC中,HandlerMapping的作用是将HTTP请求...
当请求到达服务器,`DispatcherServlet`作为标准Servlet接收请求,并根据`HandlerMapping`接口来确定合适的处理器。 `HandlerMapping`接口位于`org.springframework.web.servlet`包中,它是SpringMVC中定义的核心...
本文将从核心组件、请求处理流程、DispatcherServlet、HandlerMapping、ModelAndView、视图解析等多个方面,详细阐述SpringMVC的源码分析。 1. **核心组件** SpringMVC的核心组件包括DispatcherServlet、...
首先,Spring MVC中的主要组件包括DispatcherServlet、HandlerMapping、Controller、HandlerInterceptor、ViewResolver等。 DispatcherServlet是Spring MVC框架的前端控制器,负责接收HTTP请求并将其分发给合适的...
Spring MVC的核心组件包括DispatcherServlet、HandlerMapping、Controller、ModelAndView以及一系列辅助组件。DispatcherServlet作为前端控制器,它是所有请求的入口点,负责接收HTTP请求,并将请求转发给适当的处理...
本文主要对 Spring MVC 框架的第二天课堂笔记进行了总结,涵盖了 DispatcherServlet、HandlerMapping、HandlerAdapter、Handler、ViewResolver 等核心组件的作用和使用方式,以及注解开发方式的应用。 一、...
- 清晰的角色分配,如DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver等,提高可读性和可维护性。 - 支持灵活的请求资源映射策略。 3. Spring MVC核心组件: - DispatcherServlet:前端控制器,...
SpringMVC的工作原理是基于一系列组件的协作,这些组件包括DispatcherServlet、HandlerMapping、Controller、ModelAndView和ViewResolver。 首先,客户端发起HTTP请求,这个请求会到达DispatcherServlet,这是...