2009-09-09 14 views
7

Właśnie zacząłem od Spring Web MVC. Próbuję uniknąć rozszerzenia plików w adresie URL. Jak mogę to zrobić? (Używam Wiosna 2.5.x)Sprężyna MVC; unikanie rozszerzenia pliku w adresie URL?

Bean:

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

chcę go mieć:

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

nie mogę zmusić go do pracy. Jakieś pomysły?

Edit:

Url-mapping

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

Próbowałem zmieniając URL wzór bez powodzenia (* i/*).

+0

Czy uzyskałeś odpowiedź na to pytanie? Używam wiosny 3.2 – Konza

Odpowiedz

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> 

Następnie należy zarejestrować adresy URL, które mają być obsługiwane przez określonego kontrolera. Zobacz następujące

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

+0

Dzięki, popatrzę na to. Używam Spring 2.5.x, ale myślę, że to całkiem to samo. http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html – Ezombort

+3

Dlaczego jest to zaakceptowana odpowiedź? To nie działa. – rustyx

+0

Sprawdź poniższe odpowiedzi - '/' działa poprawnie. –

1

Czy próbowałeś <url-pattern>/*</url-pattern> w mapowaniu serwletu i <bean name="/hello" .../>?

+0

Po prostu próbowałem *, spróbuję/* teraz. Dzięki – Ezombort

+0

Nie wydaje się działać. – Ezombort

2

Spróbuj najpierw:

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

Jeśli to nie poskutkuje, to problemem jest gdzieś indziej. Czy Twój Apache jest skonfigurowany tak, aby przekazywał te adresy do Tomcat? Coś jak:

JkMount /hello worker1 
+0

To zadziałało, dzięki. Czy masz jakieś informacje, dlaczego ogólne wzorce adresów URL nie będą działać? – Ezombort

8

O ile wiem, nie można tego zrobić, jeśli używasz JSP jako widoku dla kontrolerów.

Ponieważ po przekazaniu modelu do strony JSP, Spring MVC wewnętrznie wykonuje "przekazanie" do adresu URL strony JSP. Jeśli użyjesz <url-pattern>/*</url-pattern>, ten forward będzie również obsługiwany przez twój DispatcherServlet, a nie przez twój widok JSP.

Co możesz zrobić, to użyć <url-pattern>/something</url-pattern> i mieć swój JSP jest w innym katalogu

+0

Dzięki, to dużo wyjaśniło. – Ezombort

9

W 3,0/wydaje się działać. To jest ...

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

Przynajmniej na wiosnę 3.2, zaakceptowana powyżej odpowiedź jest bardzo, ale nie do końca tym, co jest potrzebne. Poniższy plik web.xml właśnie mi pomógł, a ja dodaję go do tego wątku, aby znaleźć odniesienie do tego, kto go wyszuka ...

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