2009-09-09 24 views
7

Acabo de comenzar con Spring Web MVC. Estoy tratando de evitar extensiones de archivos en la url. ¿Cómo puedo hacer esto? (Estoy usando 2.5.x primavera)Spring MVC; evitando la extensión de archivo en url?

Bean:

<bean name="/hello.htm" class="springapp.web.HelloController"/> 

que quieren que sea:

<bean name="/hello" class="springapp.web.HelloController"/> 

no puedo conseguir que funcione. ¿Algunas ideas?

Editar:

Url-mapeo

<servlet-mapping> 
    <servlet-name>springapp</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

He intentado cambiar la url-pattern sin suerte (* y/*).

+0

¿Recibió alguna respuesta a esta pregunta? Estoy usando la primavera 3.2 – Konza

Respuesta

6
<servlet> 
    <servlet-name>spring-mvc</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>spring-mvc</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

Luego debe registrar sus direcciones URL para ser manejadas por un controlador en particular. Véase el siguiente

http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html

+0

Gracias, echaré un vistazo a eso. Estoy usando Spring 2.5.x, pero supongo que es bastante parecido. http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html – Ezombort

+3

¿Por qué es esta la respuesta aceptada? No funciona. – rustyx

+0

Consulte las respuestas a continuación - '/' funciona bien. –

1

¿Has probado <url-pattern>/*</url-pattern> en el mapeo de servlet y <bean name="/hello" .../>?

+0

Acabo de probar *, intentaré/* ahora. Gracias – Ezombort

+0

Parece que no funciona. – Ezombort

2

probar primero:

<servlet-mapping> 
     <servlet-name>spring-mvc</servlet-name> 
     <url-pattern>/hello</url-pattern> 
</servlet-mapping> 

Si eso no funciona, entonces el problema está en otra parte. ¿Tu Apache está configurado para reenviar esas URL a Tomcat? Algo así como:

JkMount /hello worker1 
+0

Eso funcionó, gracias. ¿Tienes alguna idea de por qué los patrones generales de URL no funcionarán? – Ezombort

8

Por lo que yo sé que usted no puede hacer esto si está usando como su punto de vista de JSP para los controladores.

Porque cuando pasa un modelo a un JSP, Spring MVC realiza internamente un 'reenvío' a la URL del JSP. Si usa <url-pattern>/*</url-pattern>, este forward también será manejado por su DispatcherServlet y no por su vista JSP.

Lo que puede hacer es usar <url-pattern>/something</url-pattern> y tener su JSP en un directorio diferente

+0

Gracias, eso explica mucho. – Ezombort

9

En 3.0,/parece funcionar. Eso es ...

<url-pattern>/</url-pattern> 
4

En Spring 3.2 al menos, la respuesta aceptada anteriormente es muy cercana, pero no es exactamente lo que se necesita. El bit web.xml a continuación solo me funcionó, y lo estoy agregando al hilo aquí para referencia de quien busque este próximo ...

<servlet-mapping> 
    <servlet-name>springmvc</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
Cuestiones relacionadas