使用springmvc怎么对模型数据进行处理?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
ModelAndView: 处理返回值为ModelAndView时,可以将该对象中添加数据模型
Map及Model:入参为Model、ModelMap或Map时,处理方法返回时,Map中的数据会自动添加到模型中
@SessionAttributes: 将模型中的某个属性暂存到HttpSession中,以便多个请求之间共享数据
@ModelAttribute: 方法入参标注该注解后,入参的对象就会放到数据模型中
主要有两个重要的变量
// 视图 可以传字符串(视图名字)也可以传View对象 private Object view; // 数据模型 本质是一个map private ModelMap model;
视图相关的方法
// 设置视图 public void setViewName(String viewName) { this.view = viewName; } // 获取视图 public String getViewName() { return this.view instanceof String ? (String)this.view : null; }
数据模型相关方法
// 获取数据模型 protected Map<String, Object> getModelInternal() { return this.model; } public ModelMap getModelMap() { if (this.model == null) { this.model = new ModelMap(); } return this.model; } public Map<String, Object> getModel() { return this.getModelMap(); } // 添加视图模型 public ModelAndView addObject(String attributeName, Object attributeValue) { this.getModelMap().addAttribute(attributeName, attributeValue); return this; }
springmvc底层使用request.setAttribute(name,value)来将数据放入到请求中
示例:
@RequestMapping("/modelAndViewTest") public ModelAndView modelAndViewTest(){ // 视图名 ModelAndView modelAndView = new ModelAndView("modelAndViewTest"); // 包含的数据 modelAndView.addObject("dateTime",new Date()); return modelAndView; }
@RequestMapping("/mapTest") public String mapTest(Map<String,String> map){ System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap map.put("name","张三"); return "hello"; }
在类上添加@SessionAttributes可以使该类所代表的路径下的session共享
@Controller @RequestMapping("helloWorld") // 设置name属性共享 @SessionAttributes(value={"name"}) public class HelloWorldController { @RequestMapping("/mapTest") public String mapTest(Map<String,String> map){ System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap map.put("name","张三"); return "hello"; } // 可以在该方法中获取到name值为张三 @RequestMapping("/sessionAttributes") public String sessionAttributes(HttpSession session){ System.out.println(session.getAttribute("name")); return "hello"; } }
package com.yiidian.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class ModelAttributeController { //没有返回值的情况 @ModelAttribute public void myModel(@RequestParam(required = false) String name, Model model) { model.addAttribute("name", name); } @RequestMapping(value = "/model") public String model() { return "success"; } }
package com.yiidian.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class ModelAttributeController { /** * 带返回值的情况 * @param name */ @ModelAttribute("name") public String myModel(@RequestParam(required = false) String name) { return name; } @RequestMapping(value = "/model") public String model() { return "success"; } }
@ModelAttribute("name") public String myModel(@RequestParam(required = false) String name) { return name; } //应用在方法的参数行 @RequestMapping(value = "/model") public String model(@ModelAttribute("name") String name) { System.out.println("name="+name); return "success"; }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。