SpringMVC(三)模型数据

处理模型数据

如果跳转时需要带数据:V、M,则可以使用以下方式:
ModelAndView、ModelMap 、Map、Model -数据放在了request作用域

//@SessionAttributes(value="student4")  //如果要在request中存放student4对象,则同时将该对象 放入session域中
//@SessionAttributes(types= {Student.class,Address.class})  //如果要在request中存放Student类型的对象,则同时将该类型对象 放入session域中
@Controller
@RequestMapping(value="handler") //映射
public class SpringMVCHandler {
    @RequestMapping(value="testModelAndView")
		public ModelAndView testModelAndView() {//ModelAndView:既有数据,又有视图
			//ModelAndView:Model -M     View-V
			ModelAndView mv = new ModelAndView("success");//view:  views/success.jsp 
			
			Student student = new Student() ;
			student.setId(2);
			student.setName("zs");
			
			mv.addObject("student", student);//相当于request.setAttribute("student", student);
			return mv;
		}
		
		@RequestMapping(value="testModelMap")
		public String testModelMap(ModelMap mm) {//success
			
			Student student = new Student() ;
			student.setId(2);
			student.setName("zs");
			
			mm.put("student2", student);//request域
			
			return "success";  //view
		}
		
		@RequestMapping(value="testMap")
		public String testMap(Map<String,Object> m) {
			
			Student student = new Student() ;
			student.setId(2);
			student.setName("zs");
			m.put("student3", student);//request域
			
			return "success";
		}
		
		@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";
		}
}

success.jsp

<body>
		welcome  to spring mvc success<br/>
		==== request:<br/>
		${requestScope.student.id } -${requestScope.student.name } <br/>
		${requestScope.student2.id } -${requestScope.student2.name }  <br/>
		${requestScope.student3.id } -${requestScope.student3.name }  <br/>
		${requestScope.student4.id } -${requestScope.student4.name }  <br/>
		
		==== session:<br/>
		${sessionScope.student.id } -${sessionScope.student.name } <br/>
		${sessionScope.student2.id } -${sessionScope.student2.name }  <br/>
		${sessionScope.student3.id } -${sessionScope.student3.name }  <br/>
		${sessionScope.student4.id } -${sessionScope.student4.name }  <br/>
</body>

@ModelAttribute

i.经常在修改信息时使用
ii.在不改变原有代码的基础之上,插入一个新方法。

iii.在任何一次请求前,都会先执行@ModelAttribute修饰的方法,因此最好让一个控制器只做一个功能

hander.java

		@ModelAttribute//在任何一次请求前,都会先执行@ModelAttribute修饰的方法
		public void queryStudentById(Map<String,Object> map) {
			//StuentService stuService = new StudentServiceImpl();
			//Student student = stuService.queryStudentById(31);
			//模拟调用三层查询数据库的操作
			Student student = new Student();
			student.setId(31);
			student.setName("zs");
			student.setAge(23);
//			map.put("student", student);//约定:没有注解,map的key就是方法参数类型的首字母小写后的单词
			map.put("stu", student) ;//约定:有了注解,map的key就是方法参数类型的注解
		}
		
		//修改:Zs-ls
		@RequestMapping(value="testModelAttribute")
		public String testModelAttribute(@ModelAttribute("stu")Student student) {//额外注解
			student.setName(student.getName());//将名字修改为ls
			System.out.println(student.getId()+","+student.getName()+","+student.getAge());
			return "success";
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值