2015-04-30 96 views
6

我已經映射到/home控制器的春天(4.1.6.RELEASE)MVC項目,但我的問題是,它也調用的路徑,像/home.html/home.do如何配置Spring MVC DispatcherServlet以避免帶擴展名的url?

我的配置是:

的web.xml

<servlet> 
     <servlet-name>main</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>main</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

主servlet.xml中

<mvc:annotation-driven /> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <!-- ... --> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

HomeController.java

@Controller 
@RequestMapping({"/", "/home"}) 
public class HomeController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String doGet(Model model) { 
     // ... 
     return "home"; 
    } 
} 

正如類似的問題建議:

我嘗試添加以下配置:

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
     <property name="useDefaultSuffixPattern" value="false" /> 
    </bean> 

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> 
     <property name="useSuffixPatternMatch" value="false" /> 
     <property name="useRegisteredSuffixPatternMatch" value="false" /> 
    </bean> 

但沒有成功。

當我調試DispatcherServlet我可以看到,RequestMappingHandlerMappingDefaultAnnotationHandlerMapping的實例尚未將上述註釋屬性設置爲false

enter image description here

看來,一個簡單的配置應該這樣做,但我缺少我無法找出什麼。

如何正確配置DispatcherServlet以避免映射路徑中的文件擴展名?

在此先感謝。

回答

2

根據Spring doc,配置應該在mvc:annotation-driven之下,例如,

<mvc:annotation-driven> 
    <mvc:path-matching suffix-pattern="false" /> 
    </mvc:annotation-driven> 

docs

解釋是否匹配模式到 請求時使用的後綴模式匹配(".*")。如果啓用,映射到"/users"的方法也與 "/users.*"匹配。默認值是true

+0

是的,你是對的。這工作!如果你還可以提供鏈接到文檔這將是完美的。 –

+0

肯定的事情,鏈接它知道 –

相關問題