Spring MVC:避免URL中的文件扩展名

时间:2012-03-14 13:57:15

标签: java spring spring-mvc

我看过这篇文章:Spring MVC; avoiding file extension in url?

当我使用

时,这不起作用
<servlet-mapping>
    <servlet-name>Spring-MVC-Dispatcher-Servlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

我收到了警告

WARNING: No mapping found for HTTP request with URI [/CMT/WEB-INF/jsp/content/edit.jsp] in DispatcherServlet with name 'Spring-MVC-Dispatcher-Servlet'
WARNING: No mapping found for HTTP request with URI [/CMT/WEB-INF/jsp/content/edit.jsp] in DispatcherServlet with name 'Spring-MVC-Dispatcher-Servlet'

我的默认设置是使用*.htm和网址http://localhost:8080/CMT/content/edit.htm,但我想使用http://localhost:8080/CMT/content/edit

我还需要能够加载位于CMT/jsCMT/cssCMT/lib

中的js / css文件等资源

2 个答案:

答案 0 :(得分:0)

在路径中包含目录组件。 (您可能不希望映射匹配包括内部请求在内的所有内容。)

答案 1 :(得分:0)

您是否正确映射了网址,以便同时捕获edit.htmedit?尝试(假设CMT是您的contextPath):

@RequestMapping(value = "/content/edit*")

要使资源正常运行,您需要在spring配置中指定<mvc:resources .../>。请参阅Spring doco here

编辑:Spring提供了一个DefaultAnnotationHandlerMapping bean,它通常会捕获可能的扩展名,例如.html,.xml等。我正在处理的应用程序通过以下方式关闭:

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

所以你不必担心扩展正常。