1. 程式人生 > >超詳細 Spring @RequestMapping 註解使用技巧

超詳細 Spring @RequestMapping 註解使用技巧

Request Mapping 基礎用法 在 Spring MVC 應用程式中,RequestDispatcher (在 Front Controller 之下) 這個 servlet 負責將進入的 HTTP 請求路由到控制器的處理方法。 在對 Spring MVC 進行的配置的時候, 你需要指定請求與處理方法之間的對映關係。

要配置 Web 請求的對映,就需要你用上 @RequestMapping 註解。 @RequestMapping 註解可以在控制器類的級別和/或其中的方法的級別上使用。 在類的級別上的註解會將一個特定請求或者請求模式對映到一個控制器之上。之後你還可以另外新增方法級別的註解來進一步指定到處理方法的對映關係。 下面是一個同時在類和方法上應用了 @RequestMapping 註解的示例:

程式碼

  1. @RestController  
  2. @RequestMapping("/home")  
  3. public class IndexController {  
  4.     @RequestMapping("/")  
  5.     String get() {  
  6.         //mapped to hostname:port/home/  
  7.         return "Hello from get";  
  8.     }  
  9.     @RequestMapping("/index")  
  10.     String index() {  
  11.         //mapped to hostname:port/home/index/  
  12.         return "Hello from index";  
  13.     }  
  14. }  

如上述程式碼所示,到 /home 的請求會由 get() 方法來處理,而到 /home/index 的請求會由 index() 來處理。

@RequestMapping 來處理多個 URI 你可以將多個請求對映到一個方法上去,只需要新增一個帶有請求路徑值列表的 @RequestMapping 註解就行了。

程式碼

  1. @RestController  
  2. @RequestMapping("/home")  
  3. public class IndexController {  
  4.     @RequestMapping(value = {  
  5.         "",  
  6.         "/page",  
  7.         "page*",  
  8.         "view/*,**/msg"  
  9.     })  
  10.     String indexMultipleMapping() {  
  11.         return "Hello from index multiple mapping.";  
  12.     }  
  13. }  

如你在這段程式碼中所看到的,@RequestMapping 支援統配符以及ANT風格的路徑。前面這段程式碼中,如下的這些 URL 都會由 indexMultipleMapping() 來處理:

  • localhost:8080/home
  • localhost:8080/home/
  • localhost:8080/home/page
  • localhost:8080/home/pageabc
  • localhost:8080/home/view/
  • localhost:8080/home/view/view