在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
但不完全可见。
那么,这可能吗?
谢谢!
答案 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