SpringMVC|SpringMVC 域对象共享数据的实现示例

目录

  • 使用ModelAndView向request域对象共享数据
  • 使用Model向request域对象共享数据
  • 使用map向request域对象共享数据
  • 使用ModelMap向request域对象共享数据
  • Model、ModelMap、Map的关系
  • 向session域共享数据
  • 向application域共享数据

使用ModelAndView向request域对象共享数据 index.html
使用ModelAndView

SpringMVC|SpringMVC 域对象共享数据的实现示例
文章图片


控制器
/*** 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

SpringMVC|SpringMVC 域对象共享数据的实现示例
文章图片


使用Model向request域对象共享数据 index.html
使用Model

控制器
@RequestMapping("/testModel")public String testModel(Model model){model.addAttribute("company","JLU"); return "success"; }

success.html
sucess


SpringMVC|SpringMVC 域对象共享数据的实现示例
文章图片


使用map向request域对象共享数据 index.html
使用Map

控制器
@RequestMapping("/testMap")public String testMap(Map map){map.put("age","Nineteen"); return "success"; }

sucess.html
sucess


【SpringMVC|SpringMVC 域对象共享数据的实现示例】SpringMVC|SpringMVC 域对象共享数据的实现示例
文章图片


使用ModelMap向request域对象共享数据 index.html
使用ModelMap

控制器
@RequestMapping("/testModelMap")public String testModelMap(ModelMap modelMap){modelMap.addAttribute("major","software engineering"); return "success"; }

success.html



SpringMVC|SpringMVC 域对象共享数据的实现示例
文章图片


Model、ModelMap、Map的关系 经过测试发现:除了ModelAndView的实现类是ModelAndViewModelMapModelMap 的实现类都是BindingAwareModelMap
ModelModelMapMap类型的参数其实本质上都是 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的源码可以发现,ModeAndViewModelMap是组合关系。下面是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()方法时其实是调用ModelMapaddAttribute()方法,本质上与ModelMap是一样的。
各个类之间的关系如下:
public interface Model{}public class ModelMap extends LinkedHashMap {}public class ExtendedModelMap extends ModelMap implements Model {}public class BindingAwareModelMap extends ExtendedModelMap {}

SpringMVC|SpringMVC 域对象共享数据的实现示例
文章图片

四种方式本质上都是调用的Model接口中的addAttribute方法

向session域共享数据 index.html
使用Session

控制器
@RequestMapping("/testSession")public String testSession(HttpSession session){session.setAttribute("message","session scope"); return "success"; }

success.html



SpringMVC|SpringMVC 域对象共享数据的实现示例
文章图片


向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 域对象共享数据的实现示例
文章图片

到此这篇关于SpringMVC 域对象共享数据的实现示例的文章就介绍到这了,更多相关SpringMVC 域对象共享数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读