繁体   English   中英

Spring XML处理程序映射

[英]Spring XML handler Mapping

可以通过XML配置在SimpleUrlHandlerMapping或其他XML handlerMapper中指定请求方法类型吗? 并调用控制器方法??

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="order" value="1" />
   <property name="mappings">
     <props>
       <prop key="/welcome.htm" >clinicController</prop> 
       // something like <prop key="/welcome.htm" method="GET" controllerMethod="someMethod1 ..."
       <prop key="/vets.htm">clinicController</prop>  
       // something like <prop key="/vets.htm" method=PUT method="GET" controllerMethod="someMethod2 ..."
       <prop key="/meds.htm">clinicController</prop>  
       // something like <prop key="/meds.htm" method=POST method="GET" controllerMethod="someMethod3 ..."
     </props>
   </property>
</bean>

我试图找到答案,但我什么都找不到。 我更喜欢使用XML配置而不是注释。 但是在注释中可以使用

@RequestMapping(value = "/welcome.htm", method = RequestMethod.GET)

你不能。 SimpleUrlHandlerMapping实际上是一个传统的Spring HandlerMapping实现,它主要用于旧式2.5 mvc之前的模型。 在该模型中,您必须扩展特定的控制器类,因此行为已预先配置(即每个请求都强制执行每种控制器类型的标准工作流)。 换句话说,GET或POST方法是由您可能覆盖的预定义抽象或具体方法处理的。 因此,该模式使方法类型映射成为冗余。

在Spring 3.1之前,您甚至可以在某种程度上混合使用这两种模式。 可以使用SimpleUrlHandlerMapping将控制器bean映射到某个url前缀,并通过方法类型(或通过其余的url部分或参数等)进一步细化,通过使用注释向控制器方法。 这是可能的,因为bean和方法映射是在不同的点上进行的。 Spring引用是明确的:

在Spring 3.1之前,在两个单独的阶段中检查类型和方法级请求映射 - 首先通过DefaultAnnotationHandlerMapping选择控制器,然后通过AnnotationMethodHandlerAdapter缩小调用的实际方法。 使用Spring 3.1中的新支持类,RequestMappingHandlerMapping是唯一决定应该处理请求的方法的地方。 将控制器方法视为唯一端点的集合,其中每个方法的映射都是从类型和方法级别的@RequestMapping信息派生的。

一般来说,今天注释驱动的mvc是首选方式,并且比旧方式更灵活。 由于类似IDE的STS现在提供了在一个视图中检查所有处理程序映射的方法,我看不出任何真正的缺点。 当然这只是我的观点,所以你可以放心地忽略它,但至少要重视每种方法的优点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM