Spring处理模型数据

Spring处理模型数据,如果跳转时需要带数据:view和model,则可以使用以下方式:ModelAndView、ModelMap、Map、Model,将数据放在request作用域。还有@SessionAttributes和@ModelAttribute
ModelAndView

@RequestMapping(value="testModelAndView")
	public ModelAndView testModelAndView() {//ModelAndView既有数据也有视图
		ModelAndView mv = new ModelAndView("success");//view:就是success加上前缀和后缀
		Student student = new Student();
		student.setId(2);
		student.setName("zs");
		mv.addObject("student", student);//相当于request.setAttribute("student", student)
		return mv;
	}

ModelMap

@RequestMapping(value="testModelMap")
		public String testModelMap(ModelMap mm) {
			Student student = new Student();
			student.setId(2);
			student.setName("zs");
			mm.put("student2", student);//放入request域中
			return "success";//返回view页面
		}

Map

@RequestMapping(value="testMap")
		public String testMap(Map m) {
			Student student = new Student();
			student.setId(2);
			student.setName("zs");
			m.put("student3", student);//放入request域中
			return "success";
		}

Model

@RequestMapping(value="testModel")
		public String testModel(Model model) {
			Student student = new Student();
			student.setId(2);
			student.setName("zs");
			model.addAttribute("student4", student);//放入request域中
			return "success";
		}

@SessionAttributes将数据放入session域中,只需为该类加上该注解

@SessionAttributes(value="student4,student2")//如果要把student4放入request域中,则同时将该对象放入session域中。只放入一个则value可以省略,放入多个则用逗号隔开
//@SessionAttributes(types = Student.class)//如果要在request域中存放Student类型的对象,则将Student类型的对象都放入session域中
//@SessionAttributes(types = {Student.class,Address.class})将两个类型都加入session域中

@ModelAttribute
经常在更新时使用,通过@ModelAttribute修饰的方法,会在每次请求前先执行。

//查询
		@ModelAttribute//在任何一次请求前,都会先执行@ModelAttribute修饰的方法
		//被@ModelAttribute修饰的方法,在请求该类的各个方法前均被执行的设计是合理的,基于:一个控制器只做一个功能
		public void queryStudentById(Map<String,Object> map) {
			//模拟调取三层查询数据库
			Student student = new Student();
			student.setId(31);
			student.setName("zs");
			student.setAge(23);
			//map.put("student", student);//约定:map的key就是方法参数类型首字母的小写
			//如果没有符合约定,则需要做一些配置
			map.put("stu", student);
		}
		
		//修改
		@RequestMapping(value="testModelAttribute")
		public String testModelAttribute(@ModelAttribute("stu")Student student) {
			student.setName(student.getName());
			System.out.println(student);
			return "success";
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值