2015-04-30 1 views
6

У меня есть проект Spring (4.1.6.RELEASE) MVC с контроллером, который сопоставлен /home, но моя проблема заключается в том, что она также вызывается для путей, как /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 я могу видеть, что экземпляры RequestMappingHandlerMapping и DefaultAnnotationHandlerMapping не установлены вышеуказанные комментируемые свойства 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

уверенная вещь, связанная с ней –