2009-09-09 69 views
7

我剛開始使用Spring Web MVC。我試圖避免在URL中的文件擴展名。我怎樣才能做到這一點? (我使用Spring 2.5.X)Spring MVC;避免在URL中擴展文件?

豆:

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

我希望它是:

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

我無法得到它的工作。有任何想法嗎?

編輯:

地址映射

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

我都試過,沒有運氣改變的url-pattern(*和/ *)。

+0

你有沒有得到這個問題的答案?我正在使用彈簧3.2 – Konza 2013-01-21 07:08:48

回答

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> 

然後,您需要註冊您的網址,以便由特定控制器處理。請參閱以下

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

+0

謝謝,我會看看那個。我使用的是Spring 2.5.x,但我想它是完全一樣的。 http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html – Ezombort 2009-09-09 14:03:36

+3

爲什麼這是公認的答案?這是行不通的。 – rustyx 2012-02-03 10:24:42

+0

查看下面的答案 - '/'工作正常。 – 2013-07-23 12:06:41

1

您是否嘗試過<url-pattern>/*</url-pattern> 中的servlet映射和<bean name="/hello" .../>

+0

我只是試過*,我會嘗試/ *現在。謝謝 – Ezombort 2009-09-09 12:57:58

+0

似乎沒有工作。 – Ezombort 2009-09-09 13:01:23

2

先嚐試:

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

如果不工作,那麼問題是其他地方。你的Apache是​​否設置了將這些URL轉發給Tomcat?例如:

JkMount /hello worker1 
+0

工作,謝謝。你有什麼idèas爲什麼一般的網址模式不起作用? – Ezombort 2009-09-10 05:47:32

8

據我所知,如果您使用JSP作爲您的控制器視圖,則無法執行此操作。

因爲當您將模型傳遞給JSP時,Spring MVC會在內部對JSP的URL進行「轉發」。如果您使用<url-pattern>/*</url-pattern>,則此轉發也將由您的DispatcherServlet處理,而不是由您的JSP視圖處理。

你可以做的是使用<url-pattern>/something</url-pattern>和你的JSP在不同的目錄

+0

謝謝,這解釋了很多。 – Ezombort 2009-09-11 20:18:21

9

在3.0 /似乎工作。這是...

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

在春天至少3.2,上面接受的答案是非常接近,但不是完全需要什麼。下面的web.xml位剛剛爲我工作,我將它添加到這裏的線程,以供誰參考Google的接下來...

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