`
hanqunfeng
  • 浏览: 1543124 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅谈BeanNameUrlHandlerMapping

阅读更多

spring为我们提供了多种处理器映射的支持,比如org.springframework.web.servlet.handler.SimpleUrlHandlerMapping、

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping、org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping,等等。

我用SimpleUrlHandlerMapping和DefaultAnnotationHandlerMapping比较多,其它的基本没用过。

最近在项目中使用了BeanNameUrlHandlerMapping,发现有这样一个现象:

如果没有明确声明任何处理器映射,spring会默认使用BeanNameUrlHandlerMapping,但如果明确声明了其它的处理器映射,则需要将BeanNameUrlHandlerMapping明确声明出来,而且在每个包含被映射的bean的配置文件中都要加入BeanNameUrlHandlerMapping,否则会抛异常:

WARN - No mapping found for HTTP request with URI [/BOSS_SUPPORT/service/httpService] in DispatcherServlet with name 'backend'
2010-01-08 11:14:57 [backend]:253 ERROR - Servlet.service() for servlet backend threw exception
java.io.IOException: Did not receive successful HTTP response: status code = 404, status message = [Not Found]

从异常看,报告没有找到相应的映射地址,这个现象很是奇怪,也许是我没有搞清楚,不过在网上也没有找到相关的说明,希望高手指点。

相关配置文件如下:

主配置文件a.xml:

<!-- 定义注解URL映射处理器 -->
<bean id="urlMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors" ref="interceptors" />
<property name="order" value="1"></property>
</bean>

<bean id="beanNameUrlHandlingMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors" ref="interceptors" />
<property name="order" value="2"></property>
</bean>

包含映射的一个配置文件b.xml:

<bean id="httpService" name="/httpService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service">
<ref bean="ucService" />
</property>
<property name="serviceInterface" value="com.netqin.baike.service.UcService"/>
</bean>

以上两个文件都在服务器启动时加载,虽然a.xml中已经声明了BeanNameUrlHandlerMapping,但如果b.xml中没有声明BeanNameUrlHandlerMapping,系统就会抛异常。

分享到:
评论
1 楼 sbwfgihc 2016-05-19  
有人找到原因吗

相关推荐

    Spring三大URL路径解析器(附工程源代码)

    本篇文章将深入探讨Spring中的三种主要URL路径解析器,包括`SimpleUrlHandlerMapping`、`RequestMappingHandlerMapping`以及`BeanNameUrlHandlerMapping`,并提供一个附带的工程源代码供读者实践。 1. **...

    spring mvc的配置文件详解

    Spring MVC 提供了多种 HandlerMapping 的实现方式,其中两种常见的实现是 BeanNameUrlHandlerMapping 和 SimpleUrlHandlerMapping。 ##### BeanNameUrlHandlerMapping BeanNameUrlHandlerMapping 是 Spring 默认...

    深入浅出学Spring_Web_MVC

    ### 深入浅出学Spring Web MVC #### 一、Spring Web MVC 概述 **Spring Web MVC** 是一种轻量级的、基于MVC(Model-View-Controller)设计模式的Web应用框架,是Spring框架的重要组成部分之一。它为开发者提供了...

    第三课:spring mvc 原理深度解析1

    2. DispatcherServlet 根据 HandlerMapping(如 BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping、RequestMappingHandlerMapping)查找合适的处理器(Controller)。 3. HandlerAdapter 作为适配器,根据不同的...

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第2章 处理器映射器和适配器 (共22页).pptx

    在非注解方式下,Spring提供了`BeanNameUrlHandlerMapping`和`SimpleUrlHandlerMapping`。前者基于bean的名字来匹配URL,后者则允许更灵活的URL到处理器的映射配置。 - `BeanNameUrlHandlerMapping`简单地将请求URL...

    完整版Java web开发教程PPT课件 Java开发进阶教程 第15章 springMvc核心对象拦截器(共26页).pptx

    - **BeanNameUrlHandlerMapping**:将URL直接映射到具有相同名称的Spring Bean,如果URL匹配多个Bean,可以通过别名进行管理。 3. **Controller** - **角色**:Controller是业务逻辑和数据处理的接口,它接收来自...

    使用Spring MVC构建Web应用程序1

    * ControllerBeanNameHandlerMapping:与BeanNameUrlHandlerMapping类似,根据控制器Bean的名字将控制器映射到URL。 * ControllerClassNameHandlerMapping:通过使用控制器的类名作为URL基础将控制器映射到URL。 * ...

    springmvc课堂笔记-1

    `BeanNameUrlHandlerMapping`是根据请求URL(如`/productList.action`)匹配Spring容器中的bean名称。 ##### 5. 处理器适配器配置示例 ```xml &lt;!-- 配置项 --&gt; ``` 所有的处理器适配器都需要实现`...

    SpringMVC学习笔记.docx

    例如,BeanNameUrlHandlerMapping 和 SimpleUrlHandlerMapping 分别用于根据 Bean 名称和 URL 规则映射 Handler,而 SimpleControllerHandlerAdapter 和 HttpRequestHandlerAdapter 分别用于处理实现了 Controller ...

    spring-mvc 自学文档(我自己总结的)

    &lt;bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"&gt; ``` 3. Controller(控制器) Controller是Web请求的具体处理者,它实现了特定的处理逻辑。Controller...

    SpringMVC配置

    在SpringMVC中,默认提供了几种映射处理器,如BeanNameUrlHandlerMapping,它会根据控制器类的bean名称与URL模式进行映射。例如,如果控制器的bean名称为"userController",那么请求URL "/user" 就会被映射到...

    Spring MVC原理

    Spring提供了几种常用的HandlerMapping,例如SimpleUrlHandlerMapping、BeanNameUrlHandlerMapping等。 在使用Spring MVC框架时,需要注意以下几点: * DispatcherServlet是Spring MVC的核心组件,负责处理所有的...

    springMVC笔记

    Spring提供多种HandlerMapping实现,如BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping和CommonsPathMapHandlerMapping等。 Controller在Spring MVC中扮演着核心角色,它接收来自DispatcherServlet的请求,并...

    spring 源码

    Spring MVC提供多种HandlerMapping实现,如BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping和RequestMappingHandlerMapping。RequestMappingHandlerMapping是基于注解的映射,利用@RequestMapping注解来匹配...

    SpringMVC配置文件

    &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/&gt; ``` 使用这种方式时,控制器的Bean名称需要遵循一定的命名规则,比如`/hello`的请求会被映射到名为`...

    Spring源代码解析(四):Spring_MVC.doc

    `BeanNameUrlHandlerMapping`是Spring MVC提供的一种默认映射,它根据处理器bean的名称作为URL来映射请求。 此外,其他初始化方法如`initHandlerAdapters()`则负责初始化处理器适配器(HandlerAdapter),它使得...

    SpringMVC源码总结(一)HandlerMapping和HandlerAdapter入门

    Spring MVC提供多种HandlerMapping实现,如BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping和RequestMappingHandlerMapping等。每种实现都有其特定的策略来解析请求并找到合适的处理器。 例如,...

    spring-ext-handler-mapping.rar_ext_spring ext_spring mvc

    Spring MVC默认提供了一些内置的HandlerMapping实现,如BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping等。但是,在实际项目中,我们可能需要根据特定需求定制自己的映射规则。通过扩展HandlerMapping接口,...

    springmvc学习笔记

    同时,需要定义 HandlerMapping 和 HandlerAdapter 的实现,例如 BeanNameUrlHandlerMapping 和 SimpleControllerHandlerAdapter。视图解析器如 InternalResourceViewResolver 可以配置来指定视图的前缀和后缀。 ...

    ssm整合案例

    默认情况下,Spring MVC会使用DefaultAnnotationHandlerMapping和BeanNameUrlHandlerMapping,但也可以自定义实现。 再来说说视图解析器(ViewResolver)。它的作用是将处理器返回的逻辑视图名转换为实际的视图。...

Global site tag (gtag.js) - Google Analytics