MVC框架的學習方法
當需要學習一個新的MVC框架需要從以下方面入手:
1、環境搭建(能輸出Hello Word)
2、如何傳遞引數到Controller,Controller如何獲取引數
3、如何從Controller傳遞Model到View
4、如何完成檔案的上傳
5、如何完成驗證
6、異常的處理
7、深入學習一些原理和原始碼的學習
接下來分享一下如何傳遞引數到Controller,Controller如何獲取引數
SpringMVC如何進行引數繫結
一、什麼是控制器
在一個POJO類定義處標註@Controller,再通過 <context:component-scan />
掃描響應的包,就可以使POJO類成為一個能處理HTTP請求的控制器
二、請求對映到控制器
用@RequestMapping,可以定義在類和方法上,將一個請求對映到控制器中的方法上。
三、幾種典型的處理請求的方法(Controller如何獲取請求引數)
1、請求的引數按名稱匹配的方式繫結到入參中,返回字串代表邏輯檢視名
@RequestMapping(value="/handle1")
public String handle1(@RequestParam("userName") String userName,
@RequestParam("password") String password,
@RequestParam("realName") String realName)
{
...
return success;
}
複製程式碼
@RequestParam 用來請求request中的引數,相當於request.getParameter() 其中有三個屬性:
- value用來指定要取得引數的key;
- required 所取的引數是否必須存在,如果true表示必須存在,若不存在則丟擲異常;
- default 指定該value的預設值。
這一種方式說明引數是URL的一部分,此時也可以去掉@RequestParam,直接寫引數就可以了 public String handle1(String userName, String password, String realName)
2、將cookie的值及報文頭部屬性繫結到入參,方法返回ModelAndView
@RequestMapping(value="/handle2")
public ModelAndView handle2(@CookieValue("JSESSIONID") String sessionId,
@RequestHeader("Accept-Language") String accpetLanguage)
{
ModelAndView mav = new ModelAndView();
mav.setViewName("success");
mav.addObject("user", new User());
return mav;
}
複製程式碼
3、請求的引數按名稱匹配的方式繫結到 user 屬性中,返回字串代表邏輯檢視名
@RequestMapping(value="/handle3")
public String handle3(User user)
{
...
return success;
}
複製程式碼
按“HTTP請求引數名= 命令/表單物件的屬性名”的規則,自動繫結請求資料,自動進行基本型別資料轉換
4、直接使用Servlet API 物件作為處理方法的入參,返回字串代表邏輯檢視名
@RequestMapping(value="/handle4")
public String handle4(HttpServletRequest request)
{
...
return success;
}
複製程式碼
5、以REST技術向springMVC傳遞引數使用佔位符
public ModelAndView show(@PathVariable("userid") String userid)
{
ModelAndView mav = new ModelAndView();
mav.setViewName("success");
mav.addObject("user", new User());
return mav;
}
複製程式碼
用@PathVariable來把佔位符引數繫結到控制器處理方法的入參中 注意:佔位符中的{xxx}要和@PathVariable("xxx")的名字一樣
6、還可以使用一些其他的引數,如IO流等