Spring MVC RequestMapping混乱

时间:2012-04-10 14:24:47

标签: spring-mvc

我遇到了Spring MVC RequestMapping的问题,我希望有人可以就如何继续提供建议。

我正在使用旧版客户端访问的服务器。客户端发送简单请求(见下文),但不能以任何方式更改以容纳新服务器。

客户端发送 / dbintf?命令= GETINFO,acctNum = 111 格式的获取或帖子 服务器名为dbintf,它返回一个简单的文本响应。

我想为每个命令创建一个Spring控制器,并使用注释单个控制器方法 基于命令参数的params映射。所以GETINFOController中的映射是:

@RequestMapping(params="command=GETINFO")
public String serviceRequest(....

然而,我无法让它发挥作用。以下是该服务的一些细节。

web.xml中的servlet映射:

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

intf-servlet.xml中的注释扫描指令

<context:component-scan base-package="com.intf.controller" />   
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

我一直在尝试各种组合以试图让这个方案起作用,我会把它煮沸 试错工作分为两个例子:

这不起作用。响应是:“请求的资源()不可用。”

@RequestMapping( params="command=GETINFO")
public class TESTController  {
    @RequestMapping( method = RequestMethod.GET)
    public String serviceRequest

如果我更改url以添加另一个级别:/ dbintf / test?command = GETINFO,acctNum = 111 如果我将URL模式添加到处理程序方法注释中,它就可以工作。

@RequestMapping( params="command=GETINFO")
public class TESTController  {
    @RequestMapping( value="/test",method = RequestMethod.GET)
    public String serviceRequest

这让我觉得单独使用params映射是行不通的。它似乎是一个URL 模式必须是任何映射方案的一部分。然而,对于我的情况,没有 自客户端请求URL修复后可用的URL模式: dbintf?.... 。 我的问题:是否可以单独使用基于参数的映射而不是 与模式相结合?如果是这样,我错过了什么?

提前感谢您的任何帮助或建议, beeky

1 个答案:

答案 0 :(得分:0)

我在配置中没有看到您将控制器映射到“/ dbintf”的位置?您已将DispatcherServlet(假设“dbintf”servlet是您的DispatcherServlet)映射到“/”而不是“/ dbintf”。您是否正在部署您的webapp,以便它可以在“/ dbintf”相对于您的容器的“/”处获得?我想我想要的是你可能只需要为@RequestMapping添加一些配置:

@RequestMapping(value="/dbintf", params="command=GETINFO")