SpringMVC 之模型數據筆記(三)

SpringMVC 處理數據模型還是比較簡單,概念都比較一致最經典的就是ModelAndView,以下就是SpringMVC所提供的數據模型:

1、ModelAndView  作爲請求處理方法的返回類型,在該對象中可以添加相應屬性到數據模型當中

2、@ModelAttribute: 方法入參註解後,入參會自動放置到數據模型當中。

3、Map 和 Model :入參爲org.springframework.ui.ModelMap org.springframework.ui.Map 或者 java.util.Map時,爲這個參數添加keyAndView則爲這個數據模型添加相應的參數

4、@SessionAttribute : 獲得session中的數據


ModelAndView的用法:

@RequestMapping(value = "/register.action", method = RequestMethod.POST)
public ModelAndView registerAction(User user) {
    this.userService.saveUser(user);
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("user/main");
    modelAndView.addObject("user", user);
    return modelAndView;
}


@ModelAttribute的用法:

@RequestMapping(value = "/main.html")
public String mainHtml(@ModelAttribute("user") User user, HttpSession session) {
    return "user/main";
}
通過傳參的方式自動裝配爲user對象,然後這個入參對象加入到數據模型當中。


Map 和 Model,這個和ModelAndView類似:

@RequestMapping(value = "/list")
public String userList(int start, int end, ModelMap modelMap) {
    List<User> userList = this.userService.getUserByIdRange(start, end);
    modelMap.addAttribute("userList", userList);
    return "user/list";
}
通過入參爲ModelMap,直接爲這個ModelMap添加數據模型,Map同理


@SessionAttribute 使用如下,首先我們需要將一個數據放入session當中:

@RequestMapping(value = "/main.html")
public String mainHtml(@ModelAttribute("user") User user, HttpSession session) {
    session.setAttribute("loginUser", user);
    return "user/main";
}

在controller類中打上@SessionAttribute標記在這個Controller需要獲得什麼session數據

@SessionAttributes("loginUser")
public class UserController {

通過@ModelaAttribute獲得相應的session數據

@RequestMapping("sessionUser.json")
@ResponseBody
public User getSessionUser(@ModelAttribute("loginUser") User user) {
    user.setUserId(user.getUserId() + 1);
    return user;
}


需要注意的是@ModelAttribute還可以註解到方法當中:

@ModelAttribute("user")
public User getUserAttribute(){
    User user = new User();
    user.setPwd("TONYPWD");
    user.setUsername("TONY");
    user.setUserId(999);
    return user;
}

這樣的做法是,當這整個controller任意一個方法被調用時(當然是通過HTTP請求的方式),都會從getUserAttribute這個方法當中的返回值獲得一個User對象並存儲到名爲user的數據模型屬性中。


數據模型還是比較簡單的,我的建議是選擇自己方便的做法就可以了,沒有必要都全記住,例如@SessionAttribute 對於我來說還是用的非常少的。


發佈了53 篇原創文章 · 獲贊 65 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章