2016-03-19 51 views
3

我試圖在Spring中實現SimpleUrlHandlerMapping。我正在使用Spring 4.2.5版本。SimpleUrlHandlerMapping不適用於像dsm或ds這樣的幾乎沒有擴展的url

以下是我的映射

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

    ..... 

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <props> 
      <prop key="/hello1.dsm">hc</prop> 
     </props> 
    </property> 
</bean> 

<bean id="hc" class="com.vaannila.HelloWorldController" > 
    <property name="message" value="Hello World!" /> 
</bean> 

.... 

</beans> 

當我運行Tomcat,我聽到報告說

org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/hello1.dsm] onto handler 'hc' 

在控制檯上的信息的消息,但是當我打的網址「http://localhost:8080/SpringExample5/hello1.dsm」在瀏覽器中我得到的請求的資源不可用錯誤,即404錯誤。

後來,當我將密鑰更改爲「/hello1.htm」時,它可以正常使用各自的url。我想知道是否有任何規則的URL擴展時,將網址映射到控制器。

回答

0

在web.xml,調度器的servlet URL模式被配置爲的.htm extention

<?xml version="1.0" encoding="UTF-8"?> 
............ 
<servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping>............ 

,因此它是工作正常爲 「熱媒」 推廣。 爲了使其適用於其他擴展,我們需要在web.xml文件中設置相應的url-pattern

相關問題