@Controller @Controller 註解用於標記在 Java 類上。被 @Controller 標記過的類就是一個 SpringMVC Controller對象。DispatcherServlet 會掃描使用了該註解的類的方法,並檢查對應方法是否有 @RequestMapping 註解標 ...
@Controller
@Controller 註解用於標記在 Java 類上。被 @Controller 標記過的類就是一個 SpringMVC Controller對象。DispatcherServlet 會掃描使用了該註解的類的方法,並檢查對應方法是否有 @RequestMapping 註解標記。@Controller 只是定義了一個控制器類,而使用 @RequestMapping 註解的方法才是真正處理請求的處理器。如果處理器方法所在類沒有 @Controller 註解便不能訪問。
(@Controller)
(未使用 @Controller 註解訪問)
@RequestMapping
@ReqeustMapping 註解可以標記在控制器類上。即映射請求 URL 到指定控制器。
@RequestMapping 註解還可以標記在處理請求的目標方法上。即映射請求 URL(類似 Servlet 開發中 web.xml 中配置的 Servlet 的 <url-pattern>)到處理器。
(控制器上的 @RequestMapping)
(處理器上的 @RequestMapping)
註:如果控制器(HelloWorld)類上沒有該註解,那麼訪問路徑為:helloworld 即可。
如果控制器(HelloWorld)類上有改註解,那麼訪問路徑為:springmvc/helloworld。
value 屬性名是預設屬性,可以不寫。
@RequestMapping 註解共有四個屬性:
value、method、params、headers 分別表示 請求URL、請求方式、請求參數、請求頭 的映射條件,它們之間是 AND 的關係,聯合使用多個可以使請求映射更加精確。
(指定請求 URL 和 請求方式)
(指定多個映射條件)
@RequestMapping 註解還支持 Ant 風格的請求 URL:
Ant 風格資源地址支持3中匹配符:
● ?:匹配單個字元
● *:匹配任意字元
● **:匹配多層路徑
(Ant 風格映射路徑)
@PathVariable
@PathVariable 註解可以將 URL 中的占位符參數綁定到控制器處理方法的入參中。
帶占位符的 URL 是 Spring3.x 後新增的功能,對於 SpringMVC 向 REST 發展很重要。
(@PathVariable 註解)
@RequestParam
@RequestParam 註解用於映射請求參數到控制器處理方法入參。
(@RequestParam 註解)
@RequestParam 註解有三個屬性:
value:參數名
required:表示該參數是否必須存在,預設為 true
defaultValue:表示該參數的預設值,如果請求中不包含該參數,則使用預設值
@RequestHeader
@RequestHeader 註解用於映射請求頭到目標方法入參。
(@RequestHeader 註解)
該註解也有同 @RequestParam 註解一樣的三個參數,各自作用也與其一樣。↑↑↑
使用 POJO 綁定請求參數值
SpringMVC 會根據請求參數名和 POJO 屬性名進行自動匹配,自動為該對象屬性填充對應的值,並且支持級聯屬性。
(UserInfo 類) (Address 類)
(表單項 name屬性值為類中屬性名)
(目標方法中獲取 UserInfo 對象)
使用原生 Servlet API 作為目標方法入參(參數)
Spring MVC 支持使用原生的 Servlet API 作為目標方法的參數。具體支持以下幾種類型:
HttpServletReuest、HttpServletResponse、HttpSession、java.securtiy.Principal、Locale、In(Out)putStream、Reader、Writer。
(使用原生 Servlet API 作為目標方法參數)
PS:本文存在諸多不足之處,望指出。謝謝!
未完待更...