当客户端发出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 例如 ‘/welcome224sscc’也是可以匹配到该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" />
4.org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。
<mvc:annotation-driven /> 会自动注册 DefaultAnnotationHandlerMapping 与 AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)
相关推荐
Spring MVC默认提供了一些内置的HandlerMapping实现,如BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping等。但是,在实际项目中,我们可能需要根据特定需求定制自己的映射规则。通过扩展HandlerMapping接口,...
org.apache.cxf.spring.remoting.Jsr181HandlerMapping.jar
### Spring MVC核心组件之HandlerMapping详解 #### 一、引言 在Java Web开发领域,Spring MVC框架因其灵活且强大的特性而备受青睐。它提供了一种简洁的方式来构建可维护、可扩展的应用程序。Spring MVC的核心组件之...
在本篇博客“SpringMVC源码总结(一)HandlerMapping和HandlerAdapter入门”中,我们将探讨Spring MVC框架的核心组件——HandlerMapping和HandlerAdapter。这两个组件是Spring MVC处理请求的关键,它们负责映射HTTP...
2. 配置Spring MVC:编写servlet-context.xml,设置DispatcherServlet、HandlerMapping和ViewResolver等。 3. 编写Controller:创建一个简单的Controller类,使用@RequestMapping注解处理HTTP请求。 4. 视图层实现...
在Spring 4.2.0中,SpringMVC引入了诸如类型安全的HandlerMapping和HandlerAdapter配置,增强了对HTTP方法的支持,以及对RESTful Web服务的更好支持。同时,它也支持了Java 8的日期和时间API,使得日期处理更加便捷...
- **Spring MVC 工作流程**:从请求到响应,理解 Controller、Model、ViewResolver 和 HandlerMapping 等组件的角色。 - **事务管理**:学习 Spring 如何提供声明式和编程式事务管理,以及事务的传播行为。 - **...
在Web MVC模块中,`DispatcherServlet`作为核心组件,负责请求的分发,`ModelAndView`和`HandlerMapping`等类则构成了模型-视图-控制器架构的基础。 此外,Spring框架也引入了JSR-330定义的依赖注入注解,如`@...
Spring MVC通过DispatcherServlet处理请求,使用HandlerMapping映射请求到相应的Controller方法,然后由Model处理业务,最后返回View进行渲染。 4. **JSON支持**:Spring提供了一系列工具类和库,如Jackson或Gson,...
1. Spring MVC的基本概念和配置,包括DispatcherServlet、HandlerMapping和ViewResolver。 2. 如何创建Spring MVC的Controller,以及使用注解进行请求映射和参数绑定。 3. Spring的依赖注入和AOP的使用,包括@...
源码中展示了DispatcherServlet如何分发请求,HandlerMapping如何映射请求到处理器,以及ModelAndView如何封装视图数据。同时,你还可以研究视图解析器和模板引擎的实现,例如JSP、FreeMarker或Thymeleaf。 此外,...
2. DispatcherServlet和HandlerMapping:解析请求分发和处理器映射的机制。 3. Controller和视图解析:编写RESTful风格的Controller,使用ModelAndView或直接返回视图名称。 4. 数据绑定和验证:模型数据的自动绑定...
它包括了DispatcherServlet、ModelAndView、ViewController、HandlerMapping、HandlerAdapter等关键组件,为Web开发提供了强大的工具。 这些jar包的使用通常涉及以下知识点: 1. **依赖注入**:理解如何通过XML...
`HandlerMapping`和`HandlerAdapter`分别负责映射请求到处理器和适配处理器执行。`ModelAndView`则用于返回视图模型。 6. **Spring AOP实现**:Spring的AOP并非完全基于代理的,而是使用了动态代理和CGLIB库。在...
Spring MVC的核心组件包括DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver等。 ### 事务管理 Spring框架提供了一套强大的事务管理机制,可以方便地与各种持久化技术(如Hibernate、JPA等)集成...
Spring MVC通过DispatcherServlet接收请求,使用HandlerMapping找到合适的处理器,然后调用Controller处理请求,最后通过ViewResolver渲染结果。 至于"工具"标签,这可能指的是Spring Tool Suite(STS),一个基于...
- **组件**:主要包括Model、View、Controller、HandlerMapping、HandlerAdapter、ViewResolver等组件,每个组件都有明确的职责。 - **ModelAndView**:Controller处理完请求后,返回一个ModelAndView对象,包含了...
Tom老师会解释DispatcherServlet的工作流程,以及HandlerMapping和HandlerAdapter的角色,同时还会涉及到视图解析和模型数据的传递。 除此之外,Spring5还加强了对Java 8及新特性的支持,如Lambda表达式和Stream ...
2. 配置Spring MVC:设置DispatcherServlet,处理HTTP请求,并配置HandlerMapping和HandlerAdapter来映射请求到相应的Controller方法。同时,还需要配置视图解析器,如InternalResourceViewResolver,以便将处理结果...
spring-servlet.xml 文件是 DispatcherServlet 的配置文件,它用来配置 HandlerMapping、ViewResolver 等组件。在这个文件中,我们可以配置 HandlerMapping,以便将请求映射到对应的 Handler 中。 五、Handler 配置...