赞
踩
package com.atguigu.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; import java.util.Map; /** * springMVC除过在方法上传入原生的request与session外还能怎么样把数据带给页面? * * 1、在方法出传入Map或者Model或ModelMap。 * 这参数里面保存的所有数据都会放在请求域中,可以在页面获取 * 关系:Map、Model、ModelMap最终都是BindingAwareModelMap在工作, * 相当于BindingAwareModelMap中保存的东西都会放在请求域中。 * * Map(interface(JDK)) Model(interface(Spring)) * || (implement) // * || // * \/ // * ModelMap(class) // * (extends) \\ //(implement) * \/ \/ * ExtendedModelMap * || * ||(extends) * \/ * BindingAwareModelMap * * 2、方法的返回值可以变为ModelAndView类型; * 既包含视图信息(页面地址),也包含模型数据(给页面带的数据),而且数据是放在request域中的。 * * 3、Springmvc提供了一种可以临时给session域中保存数据的方式 * 使用一个注解@SessionAttribute(只能标在类上) * @SessionAttributes(value = "msg"):给BindingAwareModelMap或者ModelAndView中保存的msg数据同时给session中放一份 * value:指定保存数据时要给session中放的数据的key */ /* value = {"msg","msg1"}表示key是msg或msg1的数据同时给session中放一份 value = {"msg","msg1"},types = {String.class}表示key是msg或msg1或类型是String的数据同时给session中放一份 不建议使用SessionAttributes,可能会引发异常 给session中存放数据推荐原生API */ @SessionAttributes(value = {"msg","msg1"},types = {String.class}) @Controller public class OutoutController { //用Map带数据到request域中 @RequestMapping("/handle01") public String handle01(Map<String,Object> map) { System.out.println("handle01执行了,map类型为:"+map.getClass()); //handle01执行了,map类型为:class org.springframework.validation.support.BindingAwareModelMap map.put("msg","你好"); return "success"; } /** * @param model 一个接口 ,用Model带数据到request域中 */ @RequestMapping("/handle02") public String handle02(Model model){ System.out.println("handle02执行了,model类型为:"+model.getClass()); //handle02执行了,model类型为:class org.springframework.validation.support.BindingAwareModelMap model.addAttribute("msg","你好"); return "success"; } //用ModelMap带数据到request域中 @RequestMapping("/handle03") public String handle03(ModelMap modelMap){ System.out.println("handle03执行了,modelMap的类型为:"+modelMap.getClass()); modelMap.addAttribute("msg","你好"); //handle03执行了,modelMap的类型为:class org.springframework.validation.support.BindingAwareModelMap return "success"; } //通过返回值为ModelAndView带数据到request域中 @RequestMapping("/handle04") public ModelAndView handle04(){ //之前的返回值就叫视图名,视图解析器是会帮我们最终拼串得到页面的真实地址 ModelAndView mv = new ModelAndView("success"); mv.addObject("msg","你好handle04"); return mv; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。