【问题标题】:Spring 3.0 REST implementation DispatcherServlet cannot find mappingSpring 3.0 REST 实现 DispatcherServlet 找不到映射
【发布时间】:2010-10-31 02:39:16
【问题描述】:

我正在尝试让一个简单的 REST 服务与 Spring 3.0 一起使用,但一直遇到阻塞错误:

在名称为“dispatcher”的 DispatcherServlet 中找不到具有 URI [/travel/us/nyc/sfo/20091010/1122/true/] 的 HTTP 请求的映射*

但是,在日志文件中它还指出:

org.springframework.web.servlet.mvc.annotation.Def aultAnnotationHandlerMapping - 将 URL 路径 [/travel/us/{from}/{to}/{date}/{time}/{departure}/] 映射到处理程序[experiment.SomeController@dd9f85]*

我认为这表明存在从 URI 到 Experiment.SomeController 类作为处理程序的映射。

我一定是忽略了其中一个配置文件中的一个简单错误,但是在检查了所有内容并进行了相当多的谷歌搜索之后,我还没有找到解决方案。我已经为 Spring 类打开了日志记录,但这也没有揭示问题。

以下是相关的配置文件和一些代码sn-ps,任何帮助都可以。 webapp 部署到 Glassfish v2.1,我在 OS X 的 JDK1.5 上使用 Spring 3.0.0 的 M3 构建。

目标是让 getTripDetails() 返回行程详细信息的 XML 版本。因此使用 MarshallingView。

来自 web.xml:

调度程序org.springframework.web.servlet.DispatcherServlet1调度程序/*

来自 dispatcher-servlet.xml:

豆> 地图> 属性> 豆> 列表> 属性> 豆> 豆> 豆>

控制器类: @Controller public class SomeController {

静态 Logger logger = Logger.getLogger(SomeController.class);

公共 SomeController() { }

@RequestMapping(value="/travel/us/{from}/{to}/{date}/{time}/{departure}", method=RequestMethod.GET)

public ModelAndView getTripDetails(@PathVariable String from, @PathVariable 字符串到, @PathVariable 字符串日期, @PathVariable 字符串时间, @PathVariable 布尔出发,模型模型){

logger.debug("getTripDetails"); // not logged

// Do some stuff
TripDetails td = ...

ModelAndView mav = new ModelAndView();
mav.setViewName("content");
mav.addObject("tripDetails", td);

return mav;

}

}

有什么想法吗?或者指向具有 XML 作为输出的 Spring 3.0 的 REST 服务的工作示例?

问候, 格罗

【问题讨论】:

    标签: rest spring-mvc


    【解决方案1】:

    你必须这样做:

    <servlet-mapping>
        <servlet-name>baseproj</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    

    否则您的 css、js 和图像将无法解析。我知道这很糟糕,但必须完成。我还是用 apache mod_jk 屏蔽了http://localhost:8080/myapp/rest 部分,所以没关系。

    【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,它与 Spring 3.0 的工作方式是将 url-pattern 中的 /* 替换为 /

    【讨论】:

    • 这是解决方案的一部分。除此之外,我还必须将 bean 的 bean 与定义的 URL 对齐。所以: 并在控制器中:@RequestMapping(value="/content/ ...")
    猜你喜欢
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2021-08-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多