【发布时间】:2016-03-22 20:43:09
【问题描述】:
尝试向现有 Spring 3.11 MVC 应用程序添加一个 RESTful Web 服务调用,但该应用程序在 web.xml 中有一个用于 spring 的 url 映射,如下所示:
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
所以基本上一切都需要以.html结尾
我希望我的网络服务不必这样做 - 理想情况下,为我的网络服务使用唯一的上下文/子文件夹,例如 /restful。
但我不确定如何让它工作......
如果我的控制器是这样的:
@ResponseBody
@RequestMapping(value="restful/test/{test}",method = RequestMethod.GET)
public String test(@PathVariable String test)
{
return "OK"+test;
}
我想通过以下方式访问它:localhost/blah/restful/test/text(任何地方都没有 .html,blah 是应用程序上下文)我应该如何处理 web.xml 中的 url-pattern - 没有干扰应用中已经存在的任何内容?
当我添加另一个这样的 url 模式时:
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/restful/*</url-pattern>
</servlet-mapping>
然后尝试访问 localhost/blah/restful/test/text,我得到一个 404 错误。
servlet 的 web-xml 的另一部分如下所示:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
spring-mvc.xml 文件中的视图解析器是这样的:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
【问题讨论】:
-
我意识到它实际上不再与尝试获取多个模式相关 - 它是模式语法本身或此应用配置中的其他内容导致问题
-
这都是你的 web.xml 我认为你错过了其中的一些东西
标签: java spring spring-mvc