2

我想向 Spring 应用程序添加休息服务。调度程序当前配置为仅提供 *.do 路径,这与休息路径并不真正兼容,所以我添加了一个额外的模式,像这样

<servlet-mapping>
    <servlet-name>timetabling</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>timetabling</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

当我点击休息控制器时,我看到了

08-01-2013 15:26:13,075 [23198170@qtp-12556818-9] org.springframework.web.servlet.PageNotFound  1080 WARN  No mapping found for HTTP request with URI [/timetabling/rest/] in DispatcherServlet with name 'timetabling'

如果我像这样更改映射

<servlet-mapping>
    <servlet-name>timetabling</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

我明白了

08-01-2013 15:28:33,664 [13327669@qtp-4725080-0] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping  220 DEBUG Returning handler method [public java.lang.String edu.ucl.isd.timetabling.web.controller.RestController.test(javax.servlet.http.HttpServletRequest)]

这让我怀疑我指定映射的方式有问题,但我看不到它是什么。不幸的是,我不能使用第二种形式,因为这会破坏应用程序的其他区域,我需要单独的映射,任何人都可以发现问题吗?

为了完整起见,这是我的休息服务的一个片段,但是看到这确实可以与根映射正常工作,我认为问题不在这里

@Controller
@RequestMapping("/rest")
public class RestController {

    @RequestMapping(value="/", method = RequestMethod.GET)
    public @ResponseBody String test() {
         return "rest service is alive";
    }
}
4

1 回答 1

3

在您的控制器上使用 @RequestMapping("/") 在您的方法上使用请求的@RequestMapping("/rest")servlet 映射将被正确分派到您的方法 not ,如果您想访问您的 test() 方法,那么最好删除来自控制器的 @RequestMapping 并将其仅保留在方法上。/rest/*/rest/rest/test()/rest//rest

于 2013-01-08T17:14:51.603 回答