2012-04-10 119 views
1

我在Spring MVC RequestMapping中遇到了問題,我希望有人可以給我如何繼續的建議。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命令= GETINFO,ACCTNUM = 111 它的工作原理,如果我一個URL模式添加到處理程序方法的註釋。

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

這讓我覺得,params映射本身將無法正常工作。看起來,URL 模式必須是任何映射方案的一部分。但是,對於我的情況,由於客戶端請求URL被修復爲:dbintf?....,因此沒有可用的URL地址 。 我的問題:是否可以單獨使用基於參數的映射而不是 與模式結合使用?如果是這樣,我錯過了什麼?

預先感謝任何幫助或建議, beeky

回答

0

我沒有在你的配置看你在哪裏映射你的控制器「/ dbintf」?您已將DispatcherServlet(假設「dbintf」servlet是您的DispatcherServlet)映射到「/」而不是「/ dbintf」。你是否在部署你的web應用程序,以使它在相對於你的容器的「/」的「/ dbintf」中可用?我想我想知道的是,你可能只需要添加一些配置到你的@RequestMapping的:

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