利用springmvc处理模型数据!
springmvc处理模型数据
很多情况下页面上需要很多数据,单单返回页面是不行的,那么springmvc如何将数据返回到该页面呢
springmvc提供了四种方式来输出模型数据
- ModelAndView:处理返回值为ModelAndView时,可以将该对象中添加数据模型
- Map及Model:入参为Model、ModelMap或Map时,处理方法返回时,Map中的数据会自动添加到模型中
- @SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间共享数据
- @ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中
ModelAndView
主要有两个重要的变量
//视图可以传字符串(视图名字)也可以传View对象 privateObjectview; //数据模型本质是一个map privateModelMapmodel;
视图相关的方法
//设置视图
publicvoidsetViewName(StringviewName){
this.view=viewName;
}
//获取视图
publicStringgetViewName(){
returnthis.viewinstanceofString?(String)this.view:null;
}
数据模型相关方法
//获取数据模型 protectedMapgetModelInternal(){ returnthis.model; } publicModelMapgetModelMap(){ if(this.model==null){ this.model=newModelMap(); } returnthis.model; } publicMap getModel(){ returnthis.getModelMap(); } //添加视图模型 publicModelAndViewaddObject(StringattributeName,ObjectattributeValue){ this.getModelMap().addAttribute(attributeName,attributeValue); returnthis; }
springmvc底层使用request.setAttribute(name,value)来将数据放入到请求中
示例:
@RequestMapping("/modelAndViewTest")
publicModelAndViewmodelAndViewTest(){
//视图名
ModelAndViewmodelAndView=newModelAndView("modelAndViewTest");
//包含的数据
modelAndView.addObject("dateTime",newDate());
returnmodelAndView;
}
Map及Model
@RequestMapping("/mapTest")
publicStringmapTest(Mapmap){
System.out.println(map.getClass());//classorg.springframework.validation.support.BindingAwareModelMap
map.put("name","张三");
return"hello";
}
@SessionAttributes
在类上添加@SessionAttributes可以使该类所代表的路径下的session共享
@Controller
@RequestMapping("helloWorld")
//设置name属性共享
@SessionAttributes(value={"name"})
publicclassHelloWorldController{
@RequestMapping("/mapTest")
publicStringmapTest(Mapmap){
System.out.println(map.getClass());//classorg.springframework.validation.support.BindingAwareModelMap
map.put("name","张三");
return"hello";
}
//可以在该方法中获取到name值为张三
@RequestMapping("/sessionAttributes")
publicStringsessionAttributes(HttpSessionsession){
System.out.println(session.getAttribute("name"));
return"hello";
}
}
@ModelAttribute
用在无返回值的方法
packagecom.yiidian.controller;
importorg.springframework.stereotype.Controller;
importorg.springframework.ui.Model;
importorg.springframework.web.bind.annotation.ModelAttribute;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestParam;
@Controller
publicclassModelAttributeController{
//没有返回值的情况
@ModelAttribute
publicvoidmyModel(@RequestParam(required=false)Stringname,Modelmodel){
model.addAttribute("name",name);
}
@RequestMapping(value="/model")
publicStringmodel(){
return"success";
}
}
用在带返回值的方法
packagecom.yiidian.controller;
importorg.springframework.stereotype.Controller;
importorg.springframework.ui.Model;
importorg.springframework.web.bind.annotation.ModelAttribute;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestParam;
@Controller
publicclassModelAttributeController{
/**
*带返回值的情况
*@paramname
*/
@ModelAttribute("name")
publicStringmyModel(@RequestParam(required=false)Stringname){
returnname;
}
@RequestMapping(value="/model")
publicStringmodel(){
return"success";
}
}
应用在方法的参数上
@ModelAttribute("name")
publicStringmyModel(@RequestParam(required=false)Stringname){
returnname;
}
//应用在方法的参数行
@RequestMapping(value="/model")
publicStringmodel(@ModelAttribute("name")Stringname){
System.out.println("name="+name);
return"success";
}
以上就是利用springmvc处理模型数据的详细内容,更多关于springmvc处理模型数据的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。