SpringMVC 之模型数据笔记(三)

26 篇文章 0 订阅
11 篇文章 0 订阅

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 对于我来说还是用的非常少的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值