使用*.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
答案 0 :(得分:0)
这可能会迟到,但可能是Spring中DefaultAnnotationHandlerMapping的问题。我相信,它会自动处理扩展,但可以关闭。此外,您的web.xml中的Servlet定义应设置为接受以&#39; *&#39;结尾的网址。