Spring MVC处理模型数据

一.ModelAndView

控制器的处理方法返回值为ModelAndView,则其即包含视图信息,也包含模型数据信息
1.添加模型数据方法
ModelAndView addObject(String attributeName,Object AttributeValue)
ModelAndView addAllObject(Map(String,?) modelMap)
2.设置视图
void setView(View view)
void setViewName(String viewName)

@RequestMapping("testModelAndView")
    public ModelAndView testModelAndView() {
        String viewName = "success";
        ModelAndView modelAndView = new ModelAndView();
        // 添加数据模型到modelAndView中
        modelAndView.addObject("time", new Date());
        // 设置返回的视图名称
        modelAndView.setViewName(viewName);;
        return modelAndView;
    }

success.jsp:

<body>
    success page !!
    time: ${requestScope.time}
</body>

二.控制器方法参数是Map或Model

SpringMVC在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器,如果方法的参数是Map或Model类型,SpringMVC会将隐含的模型引用传递给这些参数,在方法体类,可以通过这个参数对象访问到模型中的所有数据,也可以向模型中添加新的属性数据

@RequestMapping("testMap")
    public String testMap(Map<String, Object>map){
        map.put("names", Arrays.asList("aa","bb","cc"));
        return "success";
    }
@RequestMapping("testModel")
    public String testModel(Model model){
        model.addAttribute("name","zhangsan");
        return "success";
    }

三.@SessionAttribute注解

若希望在多个请求之间共享某个模型属性数据,则可以在控制器类上标注@SessionAttribute,SpringMVC将在模型中对应的属性暂存到HttpSession中

/**
 * @SessionAttributest通过value指定放入会话中属性,可以通过types指定放入模型对象类型
 */
@Controller
@SessionAttributes(value={"student"},types={Student.class})
public class SpringmvcTest {
    @RequestMapping("testSessionAttribute")
    public String testSessionAttribute(Map<String,Object> map){
        Student student = new Student("zhangsan",20,"sd@huawei.com");
        map.put("student", student);
        return "success";
    }

}

success.jsp:

<body>
    success page !!
    <br>
    <br>
    student1: ${requestScope.student}
    <br>
    <br>
    student2:${sessionScope.student}
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值