我在使用 Spring MVC RequestMapping 时遇到了问题,我希望有人可以就如何继续向我提供建议。
我正在使用将由旧客户端访问的服务器。客户端发送简单的请求(见下文),但不能以任何方式更改以适应新服务器。
客户端发送格式为/dbintf?command=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
这让我认为单独的参数映射是行不通的。似乎 URL 模式必须是任何映射方案的一部分。然而,对于我来说,没有可用的 URL 模式,因为客户端请求 URL 固定为:dbintf? .... 我的问题:是否可以单独使用基于参数的映射而不与模式结合使用?如果是这样,我错过了什么?
提前感谢您的任何帮助或建议,beeky