1

URL*.htm工作正常。但是我遇到一个问题,当我尝试在没有 的情况下访问 RESTful URL 时*.htm,服务器给了我404错误。*.htm好吧,我可以通过替换来解决问题/。如果我这样做,那么我会破坏我的网页。所以问题是我如何通过同一个 Spring Controller 进行支持RESTful和常规操作?HTTP request里面需要配置Web.xml什么?我尝试了类似/rest/*的方法,但这似乎也不起作用。

<servlet>
    <servlet-name>dispatch</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatch</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

试过了

<servlet-mapping>
    <servlet-name>dispatch</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

使用配置“Type - I”测试

当 URL 设置为以结尾时工作.htm http://localhost:8080/controllerName/my/123/url/value.htm

Web.xml 映射

<servlet-mapping>
    <servlet-name>dispatch</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>dispatch</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

控制器映射

@RequestMapping(value = "/my/{number}/url/{somevalue}", method = RequestMethod.GET, produces="application/xml")

使用配置“Type - II”进行测试

当 URL 不包含时,似乎没有其他组合有效.htm

4

1 回答 1

0

这可能会迟到,但它可能是 Spring 中的 DefaultAnnotationHandlerMapping 的问题。我相信默认情况下它会自动处理扩展,但可以关闭。此外,您的 web.xml 中的 Servlet 定义应设置为接受以“*”结尾的 URL。

于 2013-10-23T16:50:14.093 回答