簡體   English   中英

如何在Spring MVC中定義請求映射的優先級?

[英]How to define priorities for request mappings in Spring MVC?

使用SpringMVC,我有一個捕獲所有REST請求的方法:

@RequestMapping(value = "/**")
public Object catchAll(@RequestBody(required = false) Object body, HttpMethod method, HttpServletRequest request, HttpServletResponse response) {
    // ...
}

現在,我想用以下端點捕獲一些請求:

@RequestMapping(value = "/test", method = RequestMethod.POST)
public Object post(@RequestBody Object body, HttpMethod method, HttpServletRequest request, HttpServletResponse response) {
    // ...
}

現在,當我打電話給:

/測試

從不調用第二種方法。

要使我的第二個方法始終代替第一個方法,該怎么辦?

首先,正如Asura所指出的,不要實現'catchAll'方法。 話雖如此,Spring MVC允許您在URL中使用正則表達式。

此處閱讀在Spring URL中使用正則表達式的文檔。

在您的情況下,請在第一個URL中使用否定前瞻,以刪除以/test開頭的內容。 這樣,您的/**控制器將捕獲除以/test開頭的請求之外的所有請求,您可以使用其他控制器來捕獲這些請求。

在第一個網址中使用否定的超前查詢:

@RequestMapping(value = "/^(?!test)")
public Object catchAll(@RequestBody(required = false) Object body, HttpMethod method, HttpServletRequest request, HttpServletResponse response) {
// ...

}

現在,這應該捕獲/test請求:

@RequestMapping(value = "/test", method = RequestMethod.POST)
public Object post(@RequestBody Object body, HttpMethod method, HttpServletRequest request, HttpServletResponse response) {
// ...

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM