文档章节

Java中ModelAndView是做什么的?

牧师-Panda
 牧师-Panda
发布于 2017/08/08 20:27
字数 463
阅读 186
收藏 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
粉丝 30
博文 146
码字总数 180044
作品 0
浦东
springmvc请求接收参数的几种方法

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

boonya
2014/10/23
0
0
spring mvc3中的addFlashAttribute方法

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

jackyrong
2013/02/16
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
SpringBoot 使用thymeleaf 跳转页面时,总是提示404找不到页面

通过地址栏可以访问到ctroller 和方法,但就是不能跳转到页面 这是application.yml [code=java] spring: thymeleaf: cache: false prefix: classpath:/templates/ suffix: .html encoding: U......

偑岚
06/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Cointext在阿根廷和土耳其推出比特币现金短信钱包

Cointext于10月15日开始在土耳其和阿根廷提供新的基于SMS的比特币现金钱包服务,这两个国家的加密货币使用量急剧上升,以应对严峻的经济形势。 移动钱包 通过短信处理BCH交易 “比特币是更好...

lpy411
3分钟前
0
0
大数据早课-0918

9.18日早课 1.全局搜索含有abc的文件名称或文件夹的命令 2.当前目录一般用什么表示 3.切换到上一次和上一层命令分别是什么 4.pwd是查看当前目录的什么 5.隐藏文件或文件夹的标识是什么? 怎样...

hnairdb
4分钟前
0
0
mybatis学习笔记一

一、mybaits需要的项目依赖 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artif......

wuyiyi
5分钟前
0
0
CentOS6 安装 GraphicsMagick

1.安装相关依赖: yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel 2.下载并解压到目录/usr/local/ wget ft......

凯文加内特
6分钟前
0
0
RabbitMq集群使用Nginx做负载均衡

1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群) 2.Nginx做负载均衡 注意:Nginx1.90版本后 新增了stream 模块用于一般的 TCP 代理和负载均衡,之前版本不支持 修改Nginx配置文件ngi...

zhaochaochao
11分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部