springMVC學習筆記二(獲取引數,返回Model資料)
Controller如何獲取引數
1利用原有的Servlet方法,使用HttpServletRequest
2利用@RequestParam註解 @RequestParam("username")String name,當username在request中不存在,會丟擲異常,可以使用@RequestParam(value="username" required=false default=" 預設值")這樣請求有值就取,沒值就不取
3使用實體類封裝
--寫一個實體類,然後新增setter,getter方法
--實體類的setter方法與請求的引數保持一致
Controller返回引數值
方式一:
Controller返回型別為ModelAndView =================》瞭解
Map<String,Object> map= new HashMap<String,Object>();
map.put(String,Object);
return ModelAndView(String jsp名,map);
方式二:
***在Controller方法中加Model引數如:===================》建議使用
public String checkLogin(Model model){
model.addAttribute(key,value);
return "ok";
}
方式三:
利用@ModelAttribute註解,可以將方法引數放入Model中
@ModelAttribute("name")String username 將username值放入Model,
key為name,等價於model.addAttribute("name",username);
@ModelAttribute()的另一種用法,放在方法上面
程式已進入controller首先執行@ModelAttribute()再執行@RequestMapping
@ModelAttribute("msg") //相當於model.addAttribute("msg",findMsg())
public String findMsg(){
return "你好";
}
@RequestMapping()
public String Controller(){ }
--------------------------------------------------------------------------
向Session中儲存資料
a 利用Servlet方案,使用HttpSession引數
b 利用@SessionAttribute(“name”)標記,在類定義前使用,含義是將Model中儲存的key為name的資訊,由Request範圍轉換為Session範圍,
在使用前需要在Model中儲存了name一組值才可以
@SessionAttribute("name") @SessionAttribute({"name","age"})
public class LoginController(){
public String(){
model.addAttribute("name",Object);
}
}