在配置文件定义URL的映射方式(HandlerMapping)。Spring提供了几种常用的HandlerMapping。
1.使用SimpleUrlHandlerMapping
SimpleUrlHandlerMapping提供了最简单的URL映射,通过Properties将URL和Controller对应起来,配置示例如下。
<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet. handler.SimpleUrlHandlerMapping">
<!-- 为映射处理器引入拦截器bean <property name="interceptors">
<list>
<ref bean="workTimeInterceptor" />
</list>
</property>
-->
<property name="mappings">
<props>
<prop key="/a.html">controllerA</prop>
<prop key="/b.html">controllerB</prop>
</props>
</property>
</bean>
这种方式和Struts的配置类似。当用户请求一个URL时,Spring就在SimpleUrl HandlerMapping注入的Properties中查找对应的Controller。
2.使用BeanNameUrlHandlerMapping
BeanNameUrlHandlerMapping的实现更为简单,每个Controller的URL与其name属性对应,因此,只需要对每个Controller以URL作为name,就可以实现URL映射。配置示例如下。
<bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet. handler.BeanNameURLHandlerMapping" />
<bean name="/a.html" class="example.chapter7.ControllerA" />
<bean name="/a.html" class="example.chapter7.ControllerB" />
(今天写demo 的时候就是少了一句BeanNameUrlHandlerMapping,特此纪念)
之所以用Bean的name作为URL而不是id,是因为XML规范不允许在id标识中使用特殊字符“/”。当用户请求一个URL时,Spring将直接查找name为URL的Controller。
使用SimpleUrlHandlerMapping的麻烦之处在于,添加或删除Controller时必须要对SimpleUrlHandlerMapping做相应的修改,而BeanNameUrlHandlerMapping则无需手工编写映射,只需要在每个Controller中仔细定义name属性。如果使用XDoclet自动生成配置文件,则可以将name在Controller的注释中定义,维护起来更加方便。因此,我们推荐首先考虑使用BeanNameUrlHandlerMapping。事实上,如果没有在XML配置文件中定义任何UrlHandlerMapping,则Spring MVC默认使用BeanNameUrlHandlerMapping。
Spring还提供了一个ControllerClassNameHandlerMapping,它和BeanName UrlHandlerMapping类似,不过是将Controller的ClassName和对应的URL关联起来,由于这种方式灵活性欠佳,实际使用较少。
也可以混合使用多种UrlHandlerMapping,但是必须为每个UrlHandlerMapping指定order属性来表示优先级,order值越小优先级越高,Spring会先查询优先级高的UrlHandlerMapping。若找到了对应的Controller,就不再继续查询,否则,按照优先级依次查询,直到找到为止。若所有的UrlHandlerMapping都无法返回一个合适的Controller,并且没有设置默认的Controller时,就会返回给客户端一个“404 Not Found”错误,表示不存在这个URL。
3、CommonsPathMapHandlerMapping
------------------------------------
HandlerMapping
AbstractHandlerMapping
AbstractUrlHandlerMapping
AbstractDetectingUrlHandlerMapping
AbstractControllerUrlHandlerMapping
ControllerBeanNameHandlerMapping
ControllerClassNameHandlerMapping
BeanNameUrlHandlerMapping
DefaultAnnotationHandlerMapping
SimpleUrlHandlerMapping
下划线为接口,斜体为抽象类。
HandlerMapping 的作用是把请求与处理器(如Controller)做一个映射,以便于dispatcherServlet进行请求分发。
AbstractHandlerMapping实现了Order接口,顾名思义,它是有顺序的。
AbstractUrlHandlerMapping支持Ant风格(Ant-Style)的路径映射。
AbstractDetectingUrlHandlerMapping主动检查applicationContext中定义的URL映射。
AbstractControllerUrlHandlerMapping根据约定(官方文档15.10)为特定的Controller获取URL映射。
ControllerBeanNameHandlerMapping 、ControllerClassNameHandlerMapping 比较相似,前者根据applicationContext中controller的bean名称做映射,后者直接根据controller的类名做映射。
BeanNameUrlHandlerMapping根据applicationContext中定义的bean名称决定映射,这些bean不一定是controller,dispatcherServlet默认使用的HandlerMapping之一。
DefaultAnnotationHandlerMapping在JDK5.0以上是dispatcherSevlet默认使用的HandlerMapping之一,自动扫描@Controller标记的类并且做映射,极大地减少配置文件的重要工具。
SimpleUrlHandlerMapping直接在配置文件中定义URL映射。
分享到:
相关推荐
在Spring MVC框架中,URL映射是连接前端请求与后端处理逻辑的关键步骤。这个"Spring简单URL映射例子"展示了如何配置并使用URL映射来处理HTTP GET请求,同时展示如何获取并处理GET方式传递的参数。让我们深入探讨这个...
Spring配置 Spring 配置 映射 加注释!!!!Spring配置 Spring 配置 映射 加注释!!!!
标题中的“Spring+Hibernate 自动映射”是指在Java Web开发中,利用Spring框架与Hibernate ORM工具进行数据层的整合,实现对象关系映射(ORM)的自动化处理。这一技术结合了Spring的强大依赖注入(DI)和事务管理...
本文将详细探讨Spring MVC中常见的三种请求映射方式:基于注解的映射、基于XML配置的映射以及基于Java配置的映射。我们将深入理解每种方式的工作原理,并通过实例来展示其用法。 ### 1. 基于注解的映射 **注解驱动...
这篇博客文章“使用 Spring LDAP 读取数据并映射到 Java Bean 中”主要探讨了如何通过Spring LDAP来查询LDAP目录信息,并将查询结果转换为Java对象,以便在应用程序中进一步处理。 首先,`pom.xml`文件是Maven项目...
O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML。它的目的是在 Java 对象(几乎总是一个 plain old Java object,或简写为 POJO)和 XML 文档之间来回转换。 例如,您可能有一个带有几个属性的简单 bean,...
Spring 的Object/XML 映射支持Demo,spring结合第三方Castor Spring 3.0 的一个新特性是 O/X Mapper。O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML。它的目的是在 Java 对象(几乎总是一个 plain old ...
在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们分别是依赖注入和对象关系映射(ORM)的杰出代表。本示例将探讨如何在Spring与Hibernate整合的环境中实现一对一(OneToOne)映射,并进行级联操作,...
java中的属性编辑器详细说明及Spring中AnnotationMethodHandlerAdapter说明和DefaultAnnotationHandlerMapping的说明及用法
本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...
不喜欢NHibernate传统的*.hbm.xml来对数据库进行映射的朋友有福了,可以使用NHibernate.Mapping.Attribute.dll来实现自动映射。 减少不小的工作量。
Spring、Hibernate、Spring MVC 和 Ajax 是四个在Java Web开发中广泛应用的技术框架,它们共同构建了一个高效、灵活且功能丰富的后端系统。以下是对这些技术及其整合应用的详细说明: Spring框架是一个全面的企业级...
Spring作为一个全面的开源应用框架,提供依赖注入(DI)和面向切面编程(AOP)等功能,而MyBatis则是一个轻量级的持久层框架,专注于SQL映射和数据库操作。当我们需要将这两者结合起来时,可以实现更灵活、可维护的...
spring mvc视频 之控制器映射
这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心框架、Spring MVC和Spring Data JPA,而"H"则代表Hibernate,是一个流行的ORM(对象关系映射)框架。让我们详细探讨这些组件以及它们如何...
Spring MVC通过注解如@Controller、@RequestMapping等,可以让开发者在方法级别定义请求映射,简化了配置。 Spring框架的核心是依赖注入(Dependency Injection,DI),它允许组件之间通过接口进行协作,而不是硬...
Spring MVC是Spring框架的一部分,用于构建Web应用程序,而Spring Cloud则是Spring生态中的微服务解决方案,Mybatis则是一个轻量级的持久层框架,专注于SQL映射。 首先,Spring MVC作为模型-视图-控制器(MVC)架构...
2. 配置Spring MVC:设置DispatcherServlet,处理HTTP请求,并配置HandlerMapping和HandlerAdapter来映射请求到相应的Controller方法。同时,还需要配置视图解析器,如InternalResourceViewResolver,以便将处理结果...
Spring Boot、Spring Cloud、Spring MVC和MyBatis是Spring生态系统中的关键组成部分,它们各自扮演着不同的角色,共同构建了一个完整的微服务架构。 1. **Spring Boot**:Spring Boot简化了Spring应用程序的初始...