2009-12-04 8 views
6

En Struts1 usted podría tener, en struts-config.xml, una declaración como:¿Hay alguna forma de asignar una URL a otra URL en Spring?

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

Algo parecido también es posible en la primavera, o puedo asignar una dirección URL única a un controlador? Estoy usando Spring 2.5.x.

Podría por supuesto asignar la dirección URL al mismo controlador como:

<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> 
     ... 

O puede utilizar el org.springframework.web.servlet.mvc.ParameterizableViewController y tener algo como:

<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> 
     ... 

Sé que podría estar complicando las cosas y yo debería apegarse a las cosas simples que hacen el trabajo, pero me gustaría que esto sea más como una declaración del tipo: "esta URL es, de hecho, un acceso directo (o alias) a esta otra URL" (no pregunte por qué ... larga historia ...) que de alguna manera es visible con el ParameterizableViewController pero no completamente.

Entonces, ¿es esto posible?

¡Gracias!

Respuesta

1

finalmente terminé creando una asignación de controlador URL distinta en la que agrupan los alias de URL. entonces recurrí a una descripción muy detallada de lo que las asignaciones contenidas son todos acerca, algo así como:

<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> 
     ... 
0

No estoy lo suficientemente familiarizado con Spring MVC para saber la manera más fácil de hacer lo que quiera allí. Sin embargo, el UrlRewriteFilter project facilita la configuración de reglas para reenviar una url a otra url.

0

Podría hacer algo fácilmente que le permita especificar que "esta URL es de hecho un acceso directo (o alias) a esta otra URL" al implementar HandlerInterceptor y hacer que su implementación contenga una propiedad que es un mapa de URL que debe redirigir, o reenviar, a otras URL.

En su XML, simplemente agregue un bean para este interceptor y configúrelo qué URL debe redirigir a qué, y agregue una referencia al interceptor a la propiedad Interceptor de SimpleUrlHandlerMapping.

+0

También estaba pensando en añadir un interceptor que atrapa un URL y lo reenvía a otro, a continuación, volver falsa para romper el cadena de ejecución. Pero, ¿el mapeo de manejador no tiene que resolver una cadena de ejecución para la solicitud entrante? Solo entonces, DispatcherServlet ejecutará el controlador y los interceptores encontrados en la cadena devuelta. Así que tengo que asignar la URL a "algo" y luego dejar que el interceptor maneje el resto. Pero, ¿a qué lo mapeo? –

+0

En realidad, no estoy seguro de si el manejador necesita tener un mapeo para cada URL antes de poder llevarlo a un interceptor, pero si lo hace: mapear * a una página 404 (no encontrada) y usted debería estar bien ... –

0

Recomendaría administrar las reglas basadas en URL fuera de los archivos de configuración de Spring? Mantenga limpios los archivos de configuración de Spring y vuelva a escribir/administrar sus URL. Eche un vistazo al http://tuckey.org/urlrewrite/.

espero que ayude,

-florin

Cuestiones relacionadas