SpringMVC|SpringMVC 域对象共享数据的实现示例
目录
- 使用ModelAndView向request域对象共享数据
- 使用Model向request域对象共享数据
- 使用map向request域对象共享数据
- 使用ModelMap向request域对象共享数据
- Model、ModelMap、Map的关系
- 向session域共享数据
- 向application域共享数据
使用ModelAndView向request域对象共享数据 index.html
使用ModelAndView
文章图片
控制器
/*** ModelAndView有Model和View的功能* Model主要用于向请求域共享数据* View主要用于设置视图,实现页面跳转*/@RequestMapping("/testModelAndView")public ModelAndView success(){ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("username","gonghr"); //向请求域共享数据modelAndView.setViewName("success"); //设置视图名称,实现页面跳转return modelAndView; //返回}
success.html
sucess
文章图片
使用Model向request域对象共享数据 index.html
使用Model
控制器
@RequestMapping("/testModel")public String testModel(Model model){model.addAttribute("company","JLU"); return "success"; }
success.html
sucess
文章图片
使用map向request域对象共享数据 index.html
使用Map
控制器
@RequestMapping("/testMap")public String testMap(Map map){map.put("age","Nineteen"); return "success"; }
sucess.html
sucess
【SpringMVC|SpringMVC 域对象共享数据的实现示例】
文章图片
使用ModelMap向request域对象共享数据 index.html
使用ModelMap
控制器
@RequestMapping("/testModelMap")public String testModelMap(ModelMap modelMap){modelMap.addAttribute("major","software engineering"); return "success"; }
success.html
文章图片
Model、ModelMap、Map的关系 经过测试发现:除了
ModelAndView
的实现类是ModelAndView
,Model
、Map
和ModelMap
的实现类都是BindingAwareModelMap
。Model
、ModelMap
、Map
类型的参数其实本质上都是 BindingAwareModelMap
类型的class of ModelAndView:class org.springframework.web.servlet.ModelAndViewclass of Model:class org.springframework.validation.support.BindingAwareModelMapclass of Map:class org.springframework.validation.support.BindingAwareModelMapclass of ModelMap:class org.springframework.validation.support.BindingAwareModelMap
阅读
ModeAndView
的源码可以发现,ModeAndView
和ModelMap
是组合关系。下面是ModeAndView
的部分源码。public class ModelAndView {@Nullableprivate ModelMap model; public ModelAndView() {} public ModelMap getModelMap() {if (this.model == null) {this.model = new ModelMap(); }return this.model; }public ModelAndView addObject(String attributeName, @Nullable Object attributeValue) {this.getModelMap().addAttribute(attributeName, attributeValue); return this; }
当
ModeAndView
调用addObject()
方法时其实是调用ModelMap
的addAttribute()
方法,本质上与ModelMap
是一样的。各个类之间的关系如下:
public interface Model{}public class ModelMap extends LinkedHashMap {}public class ExtendedModelMap extends ModelMap implements Model {}public class BindingAwareModelMap extends ExtendedModelMap {}
文章图片
四种方式本质上都是调用的
Model
接口中的addAttribute
方法向session域共享数据 index.html
使用Session
控制器
@RequestMapping("/testSession")public String testSession(HttpSession session){session.setAttribute("message","session scope"); return "success"; }
success.html
文章图片
向application域共享数据 index.html
使用Application
控制器
@RequestMapping("/testApplication")public String testApplication(HttpSession session){ServletContext application = session.getServletContext(); application.setAttribute("testApplication","hello,application"); return "success"; }
success.html
文章图片
到此这篇关于SpringMVC 域对象共享数据的实现示例的文章就介绍到这了,更多相关SpringMVC 域对象共享数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 数组常用方法一
- GIS跨界融合赋能多领域技术升级,江淮大地新应用成果喜人
- jQuery插件
- iOS面试题--基础
- 21天|21天|羊多多组合《书都不会读,你还想成功》
- 口红选得好,对象不愁找......
- java静态代理模式
- Python-类和对象
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法