Java Can';当url模式是路径时,不能让SpringMVC调度程序正常工作

Java Can';当url模式是路径时,不能让SpringMVC调度程序正常工作,java,spring,spring-mvc,spring-3,Java,Spring,Spring Mvc,Spring 3,我有一个web应用程序,目前我们正在为REST服务应用SpringMVC。我们希望我们的rest服务显示在${contextPath}/rest/**下,但是当我设置此项时,我们得到: 在名为“Spring MVC Dispatcher Servlet”的DispatcherServlet中找不到URI为[/myapp/rest/testSvc/message]的HTTP请求的映射 我的web.xml具有: <servlet> <servlet-name>Spring

我有一个web应用程序,目前我们正在为REST服务应用SpringMVC。我们希望我们的rest服务显示在
${contextPath}/rest/**
下,但是当我设置此项时,我们得到:

在名为“Spring MVC Dispatcher Servlet”的DispatcherServlet中找不到URI为[/myapp/rest/testSvc/message]的HTTP请求的映射

我的
web.xml
具有:

<servlet>
  <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      /WEB-INF/spring/servlet-context.xml
    </param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
  <url-pattern>/rest</url-pattern>
</servlet-mapping>
我的控制器如下所示:

@Controller
@RequestMapping(value = "/rest/testService")
public class TestREST {
    @RequestMapping(value="message", method=RequestMethod.GET)
    public @ResponseBody String getMessage() {
        return "REST working";
    }

如果我将
web.xml
中的
url模式
转换为*.rest,并将
消息的请求映射
转换为
message.rest
,它会起作用。

也许您可以尝试更改为
/rest/*或
/rest*,看看这是否有帮助。

问题可能是您在这两种情况下都重复了
/rest
前缀
web.xml
@RequestMapping
。它应该在一个或其中一个中,但不能同时在两个中,例如

<url-pattern>/rest</url-pattern>
@RequestMapping
操作的路径是servlet部分后面的路径部分,而您的
web.xml
将servlet部分定义为
/path
,因此
@RequestMapping
与剩下的部分匹配,即
/testService


在其当前形式中,您的
@RequestMapping
实际上与
{contextPath}/rest/rest/testService

匹配,但不幸的是,这也不起作用。我可以看出,在发送程序记录错误时,它正在接收请求。我猜如果它没有收到请求,它就不会正确登录/rest*无法通过servlet,尽管/rest/*可以。事实证明,
/rest/*
与skaffman的答案结合起来是必需的,我对此投了赞成票,谢谢,伙计。我想可能也是这样,但不幸的是,事实并非如此,servlet实际上正在接收请求,这就是它被记录的原因,但是,它没有正确匹配。干杯,伙计,我确实尝试过,但无法使它工作,问题是为什么我有
/rest
,将其更改为
/rest/*
,现在它工作正常。所以这两个人的结合在我身上。谢谢你。文件摘要中有关于这个的消息来源吗?
<url-pattern>/rest</url-pattern>
@RequestMapping(value = "/testService")