具有RESTful URL和.htm URL的HTTP请求

时间:2013-09-04 03:53:32

标签: spring-mvc restful-url

使用*.htm的网址正常。但我遇到的问题是,当我尝试访问没有*.htm的RESTful URL时,服务器会给我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>

使用配置测试&#39;输入 - I&#39;

将网址设置为以.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")

使用配置测试&#39;类型 - II&#39;

当网址不包含.htm

时,似乎没有其他组合可行

1 个答案:

答案 0 :(得分:0)

这可能会迟到,但可能是Spring中DefaultAnnotationHandlerMapping的问题。我相信,它会自动处理扩展,但可以关闭。此外,您的web.xml中的Servlet定义应设置为接受以&#39; *&#39;结尾的网址。