【问题标题】:Spring MVC: Avoiding file extension in URLSpring MVC:避免 URL 中的文件扩展名
【发布时间】:2012-03-14 13:57:15
【问题描述】:

我看过这个帖子: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 和 URL http://localhost:8080/CMT/content/edit.htm,但我想使用 http://localhost:8080/CMT/content/edit

我还需要能够加载位于 CMT/jsCMT/cssCMT/lib 中的 js/css 文件等资源

【问题讨论】:

  • 您的 servlet 映射正常。但是您是否定义了一个关心 /CMT/* 之类的 URL 的 Spring MVC 控制器?
  • @krock - 不是,在上面的示例中,我使用了该问题中建议的修复方法
  • @AlexR - 不,我想不是......我不希望任何 URL 都能正常工作。如果没有它的映射,我希望它失败。我只是不想要文件扩展名。
  • 向我们展示您的控制器代码 - 特别是您的 @RequestMapping 注释。您是否在它们的末尾添加了 *:@RequestMapping(value = "/content/edit*")

标签: java spring spring-mvc


【解决方案1】:

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

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

要让资源正常工作,您需要在 spring 配置中指定 &lt;mvc:resources .../&gt;。请参阅Spring doco here

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

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

因此,您通常不必担心扩展。

【讨论】:

  • 有没有办法在不使用通配符的情况下做到这一点......也许我把/content/editUsers/或其他东西放在一起......我想确保它不匹配/content/edit/
  • 是的,你可以在值部分使用String[]来指定它可以匹配两个或多个URL:@RequestMapping(value = {"/content/edit","/content/edit.htm"})
  • 如果我这样做,它仍然不会匹配我的web.xml 中的*.htm。我已经尝试在那里使用/*,但它不匹配。
  • 您的问题中没有提到 web.xml 中的*.htm... Spring 建议使用/*(正如您引用的其他 Q 一样)。否则,如果没有单独的映射,您的静态资源将无法工作(*.js、*.css)。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-11-26
    • 2015-07-10
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2016-03-13
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多