文档章节

Java中ModelAndView是做什么的?

牧师-Panda
 牧师-Panda
发布于 2017/08/08 20:27
字数 463
阅读 203
收藏 1

要了解ModelAndView,首先要知道Spring Web MVC处理Http请求的大致过程:

一旦Http请求到来,DispatcherServlet负责将请求分发。DispatcherServlet可以认为是Spring提供的前端控制器,所有的请求都要经过它来统一分发。

在DispatcherServlet将请求分发给Spring Controller之前,需要借助Spring提供的HandlerMapping定位到具体的Controller。HandlerMapping是这样一种对象,它能够完成客户请求到Controller之间的映射。Spring Controller将处理来自DispatcherServlet的请求,Spring的Controller类似于Struts的Action,能够接受HttpServletRequest和HttpServletResponse。Spring为Controller接口提供了若干实现类,位于org.springframework.web.servlet.mvc包中,由于Controller需要为并发用户处理上述请求,因此实现Controller接口的时候,必须保证线程安全并且可以重用。Controller将处理客户请求,这和Struts的Action扮演的角色是一致的。

一旦Controller处理完成客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了Model和View,从宏观的角度来讲,DispatcherServlet是整个Web应用的控制器;从微观的角度来讲,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。前端控制器返回的视图可以是视图的逻辑名,或者实现了View接口的对象。View对象能够渲染客户响应的结果。其中ModelAndView中的Model能够供渲染View时使用。借助于Map对象能够存储模型。

如果ModelAndView返回的视图只是逻辑名,则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。

DispatcherServlet将View对象渲染出的结果返回个客户。

 

本文转载自:

共有 人打赏支持
牧师-Panda
粉丝 32
博文 146
码字总数 180044
作品 0
浦东
私信 提问
spring mvc3中的addFlashAttribute方法

记得在spring mvc2中,当保存POJO到数据库后,要返回成功页面,如果这个时候要带点信息, 则要这样: //第三个参数(UserModel user)默认为绑定对象 @RequestMapping(value = "/user/save", ...

jackyrong
2013/02/16
0
0
springmvc请求接收参数的几种方法

通过@PathVariabl注解获取路径中传递参数 转载请注明出处:springmvc请求接收参数的几种方法 代码下载地址:http://www.zuidaima.com/share/1751862044773376.htm JAVA [java] view plainco...

boonya
2014/10/23
0
0
Java 及 Springboot 2 中的异常闲谈

Java及springboot2中的异常闲谈 异常的简介 首先看一下常见的 Throwable 类 官方Java 8 Throwable 官方介绍。 Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类...

seal_90
08/13
0
0
springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。下面将对具体的一一进行说明: ModelAndView Java代码 @RequestMapping("/show1") public...

随智阔
2014/03/09
0
0
Spring MVC之@ControllerAdvice详解

对于@ControllerAdvice,我们比较熟知的用法是结合@ExceptionHandler用于全局异常的处理,但其作用不仅限于此。ControllerAdvice拆分开来就是Controller Advice,关于Advice,前面我们讲解S...

爱宝贝丶
10/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

错误: 找不到或无法加载主类

在IDEA的使用过程中,经常断掉服务或者重启服务,最近断掉服务重启时突然遇到了一个启动报错: 错误:找不到或无法加载主类 猜测:1,未能成功编译; 尝试:菜单---》Build---》Rebuild Pro...

安小乐
12分钟前
1
0
vue路由传参,刷新页面,引发的bug

最近遇到一个bug 通过vue路由跳转到页面, 然后接参控制(v-if ),成功显示 而刷新页面,显示失败。 苦苦地找了半天原因,打印参数发现正确,再打印下类型......,路由跳过来会保持传参时的...

hanbb
13分钟前
0
0
【58沈剑 架构师之路】InnoDB,select为啥会阻塞insert?

MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。 但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。 InnoDB的细粒度锁,是实现在索引记录上的。 一,Inn...

张锦飞
16分钟前
0
0
冒泡,选择和插入排序比较

/** * 冒泡排序,两层嵌套循环,内层局部比较后,找出最大或者最小数据并交换数据,使其局部有序,外层用于比较剩余元素,相较于选择排序,选择排序相当于是冒泡的一个优化版本(减少了交换...

strict_nerd
17分钟前
0
0
html内联(行内)元素、块级(块状)元素和行内块元素分类

HTML可以将元素分类方式分为内联(行内)元素、块级(块状)元素和行内块元素三种。 注:HTML是标签语言,那么既然是标签,就可以自己定义一些自己元素(如<wode>自定义的元素</wode>等),自...

NB-One
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部