处理模型数据以及ModelAttribute等注解的使用

在这里插入图片描述
如果跳转时需要带数据:V、M,则可以使用以下方式:
ModelAndView、ModelMap、Map、Model----数据存放在request作用域中

@RequestMapping(value="ModelAndView")
public ModelAndView ModelAndView() {//ModelAndView:既有数据,又有视图
	//ModelAndView:Model---M  View---V
	ModelAndView mv=new ModelAndView("A_success");//view: views/success.jsp
	
	Student student=new Student();
	student.setId(12);
	student.setName("joker");
	mv.addObject("student", student);//相当于:request.setAttribute();
	return mv;
}

@RequestMapping(value="testModelMap")
public String  testModelMap(ModelMap mm) {

	Student student=new Student();
	student.setId(13);
	student.setName("Rose3");
	mm.put("student2", student);//request域,springmvc自动放入
	return "A_success";
}

@RequestMapping(value="testMap")
public String  testMap(Map<String , Object> map) {
	
	Student student=new Student();
	student.setId(14);
	student.setName("TomCat4");
	map.put("student3", student);//request域,springmvc自动放入
	return "A_success";
}

@RequestMapping(value="testModel")
public String  testModel(Model model) {

	Student student=new Student();
	student.setId(15);
	student.setName("Luck5");
	model.addAttribute("student4", student);//request域,springmvc自动放入
	return "A_success";
}

注解方式:@SessionAttributes、@ModelAttribute
如何将数据放入session作用域中?@SessionAttributes(…)

//如果要在request中放入student4对象,则同时放入session中
@SessionAttributes("student4")
public class XXXX{} 

//如果要在request中存放student类型对象,则同时放入session中
@SessionAttributes(types=Student.class)

@ModelAttribute:经常在 更新时使用
通过@ModelAttribute修饰的方法,会在每次请求前先执行;并且该方法的参数map.put()可以将 对象 放入 即将查询的参数中;
必须满足的约定:
map.put(k,v) 其中的k 必须是即将查询的方法参数 的首字母小写
testModelAttribute(Student xxx), 即student;
如果不一致需要通过@ModelAttribute声明。如下:
testModelAttribute(@ModelAttribute(“stu”)Student xxx)

@ModelAttribute//任何一次请求之前先执行@ModelAttribute修饰的方法
public void query(Map<String , Object> map) {
	//StudentService stuService=new StudentService();
	//Student student=stuService.queryStudentById(31);
	//模拟调用三层查询数据库的操作
	Student student =new Student();
	student.setId(31);
	student.setName("sw");
	student.setAge(18);
//	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.getId()+"-"+student.getName()+"-"+student.getAge());
	return "A_success";
}

@ModelAttribute的应用之处:
1.在 更新数据时使用
2.在不改变原有代码的基础之上,插入一个新的方法。

注意:@ModelAttribute修饰的方法会在该类的每个方法(请求)执行之前执行(本来是基于理念:一个控制器对应一个功能),使用时慎用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值