有没有办法将URL映射到Spring中的另一个URL?

时间:2009-12-04 08:41:24

标签: java spring web-applications configuration

在Struts 1中,您可以在struts-config.xml中获得如下声明:

<action path="/first" forward="/second.do">

在Spring中是否也有类似的东西,或者我只能将URL映射到控制器?我使用的是Spring 2.5.x。

我当然可以将URL映射到同一个控制器:

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
    <props>
      <prop key="/first.do">theController</prop>
      <prop key="/second.do">theController</prop>
      ...

或者可以使用org.springframework.web.servlet.mvc.ParameterizableViewController并使用类似的内容:

<bean id="theDummyController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
     <property name="viewName" value="forward:second.do"/>
</bean>

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
    <props>
      <prop key="/first.do">theDummyController</prop>
      <prop key="/second.do">theController</prop>
      ...

我知道我可能会让事情变得复杂,我应该坚持完成工作的简单事情,但我希望这更像是一种类型的陈述:“这个URL实际上是一种捷径(或者别名)到这个其他网址“(不要问为什么......长篇故事...),ParameterizableViewController但不完全可见。

那么,这可能吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

我最终创建了一个单独的URL处理程序映射,其中我将URL别名组合在一起。然后,我对所包含的映射的所有内容进行了非常详细的描述,例如:

<bean id="aliasUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <description>
    <![CDATA[
      The following URLs are in fact shortcuts (or aliases) 
      to other URLs etc etc (...I'll spare you the ugly part)
    ]]>
  </description>
  <property name="mappings">
    <props>
      <prop key="/first.do">theController</prop>
      ...

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
    <props>
      <prop key="/second.do">theController</prop>
      ...

答案 1 :(得分:0)

我对Spring MVC不太熟悉,知道在那里做你想做的最简单的方法。但是,UrlRewriteFilter project可以轻松设置规则以将一个网址转发到另一个网址。

答案 2 :(得分:0)

您可以轻松制作一些内容,允许您通过实施HandlerInterceptor指定“此URL实际上是此其他网址的快捷方式(或别名)”,并让您的实现包含一个属性,即URL的映射应该重定向或转发到其他URL。

在您的XML中,您只需为此拦截器添加一个bean,并为其配置哪些URL应重定向到哪个,并将拦截器的引用添加到SimpleUrlHandlerMapping的拦截器属性。

答案 3 :(得分:0)

我建议在Spring配置文件之外管理基于URL的规则?保持Spring配置文件清洁,并在外面重写/管理您的URL。看看http://tuckey.org/urlrewrite/

我希望它有所帮助,

-florin