ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初探SpringMVC

2020-11-02 15:33:50  阅读:205  来源: 互联网

标签:attributeValue SpringMVC ModelMap attributeName 视图 初探 ModelAndView hello


初探SpringMVC

参照how2j的简单案例,使用注解方式

先创建ModelAndView对象,再通过它的方法去设置数据与转发的视图名

@RequestMapping("/hello")
public ModelAndView handleHelloRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
   ModelAndView mav = new ModelAndView("hello");
   mav.addObject("message", "Hello World");
   return mav;
}

@RequestMapping("/hello") :表示将访问/hello的请求交由使用该注解的handler方法(以下的handleHelloRequest)处理

ModelAndView mav = new ModelAndView("hello"); :来看看ModelAndView为何物

ModelAndView的成员变量

  • view:该属性用来储存返回的视图信息

  • ModelMap:LinkedHashMap的子类,储存键值对,主要用于传递控制方法处理数据到结果页面,类似于request对象的setAttribute方法的作用

  • HttpStatus:状态码,例如200-OK/404-NOT FOUND

  • cleared:判断是否被clear()方法清除了

//ModelAndView.class
public ModelMap getModelMap() {
       if (this.model == null) {
           this.model = new ModelMap();
      }
       return this.model;
  }

public ModelAndView addObject(String attributeName, Object attributeValue) {
       this.getModelMap().addAttribute(attributeName, attributeValue);
       return this;
  }

//ModelMap.class是LinkedHashMap的子类
public ModelMap addAttribute(String attributeName, Object attributeValue) {
       Assert.notNull(attributeName, "Model attribute name must not be null");
       this.put(attributeName, attributeValue);
       return this;
  }

新建一个ModelAndView对象后,一开始的getModelMap()获取的Model对象是空的,new一个之后才往里面塞数据


ModelAndView的用法主要有两种:

1.上面的用法,使用该对象然后设置数据与转发的视图名

setViewName(String viewName):‎设置此 ModelAndView 的视图名称, 由 DispatcherServlet 通过 ViewResolver 解析

addObject(String attributeName, Object attributeValue):通过key/value的方式绑定数据

2.设置页面跳转

当InternalResourceViewResolver看到视图格式中的"redirect:"前缀时,就知道要将其解析为重定向规则,而不是视图的名称。除了"redirect:","forward:"也能被识别,请求将会前往指定的URL路径。

标签:attributeValue,SpringMVC,ModelMap,attributeName,视图,初探,ModelAndView,hello
来源: https://www.cnblogs.com/royapk/p/13914690.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有