springMVC中的ModelAndView说明
ModelAndView 类别就如其名称所示,是代表了Spring Web MVC程式中呈现画面时所使用Model资料物件与View资料物件,由于Java程式中一次只能返回一个物件,所以ModelAndView的作用封装这两个物件,以方便您一次返回Model与View这两个物件。
最简单的ModelAndView是持有View的名称返回,之后View名称被View resolver,也就是实作org.springframework.web.servlet.View介面的实例解析,例如 InternalResourceView或JstlView等等,最简单的ModelAndView建构方式如下:
ModelAndView(String viewName)
如果您要返回呈现画面时所需的Model资料物件,则可以使用Map物件来收集呈现资料时所需的资料,然后在建构ModelAndView作为建构时的引数,您可以使用下面这个版本的ModelAndView建构方法:
ModelAndView(String viewName, Map model)
Map物件中设定好键(Key)与值(Value),之后可以在要呈现的画面中取出加以显示(例如在JSP网页中),如果您要返回一个Model资料物件并指定Model的名称,则可以使用下面这个ModelAndView版本:
ModelAndView(String viewName, String modelName, Object modelObject)
藉由modelName,您可以在要View的实作类别中取出Model资料物件,并根据View所使用的技术来加以显示(可能是JSP网页、Pdf等呈现技术)。
ModelAndView类别也提供实作View介面的物件来作为建构时的引数,以下是三个可用的建构方法版本:
ModelAndView(View view)
ModelAndView(View view, Map model)
ModelAndView(View view, String modelName, Object modelObject)
一个实作View的实例是org.springframework.web.servlet.view.RedirectView, ModelAndView预设是使用转发(Forward)方式来完成请求的结果画面,使用RedirectView的话,则会使用重新导向(Redirect)将请求重导至指定的结果画面位置,以呈现请求的结果,例如:
...
public ModelAndView handleRequest(....) ... {
...
return new ModelAndView(new RedirectView(this.getViewPage()));
}
...
在这边,viewPage所设定的位址要是从伺服器网页根目录开始指定,而不是Web应用程式的根目录,所以您的getViewPage()传回的位址必须像是/FirstSpringMVC/pages/index.htm这样的位址,其中FirstSpringMVC是您的Web应用程式目录。
使用转发(Forward)方式的话,网址列上并不会出现被转发的目标位址,而且转发方式是在Web应用程式之内进行,可以访问Web应用程式所设定的内部目录,像是WEB-INF目录,因而您可以将一些要控管存取的资源放到WEB-INF下,如此使用者就无法直接请求这些资源,而必须透过 DispatcherServlet与Controller的处理与控管,才可以取得这些资源,转发方式只能在Web应用程式中进行,不能指定至其它的 Web应用程式位址。
使用重新导向(Redirect)的话,Web应用程式会要求客户端浏览器重新发出一个所指定的请求位址,也就是实际上相当于客户端重新连接至一个所指定的位址,因此浏览器的位址列上会出现被重新导向的资讯,重新导向的请求是由浏览器发出,所以不能访问Web应用程式中的隐藏目录,像是WEB-INF,重新导向是重新要求一个网页,所以可以指定至其它的Web应用程式位址。
springMVC中的ModelAndView说明的更多相关文章
- SpringMVC中使用ModelAndView遇到的问题
本文记录我在SpringMVC中使用ModelAndView,添加模型数据到ModelAndView中时遇到的问题: 1.jsp页面用EL表达式来获取值时直接显示EL表达式,JSP不解析EL表达式: ...
- SpringMvc中ModelAndView模型的应用
/** * 目标方法的返回值可以是 ModelAndView 类型. * 其中可以包含视图和模型信息 * SpringMVC 会把 ModelAndView 的 model 中数据放入到 reques ...
- SpringMVC中的Model和ModelAndView的区别
1.主要区别 Model是每次请求中都存在的默认参数,利用其addAttribute()方法即可将服务器的值传递到jsp页面中:ModelAndView包含model和view两部分,使用时需要自己实 ...
- SpringMvc中的数据校验
SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...
- 详解SpringMVC中GET请求
GET请求概述 GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接.URL的编码格式采用的是ASCII编码,而不是uniclde,所有的非ASCII字符都要编 ...
- SpringMVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- SpringMVC中使用Json传数据
在web项目中使用Json进行数据的传输是非常常见且有用的,在这里介绍下在SpringMVC中使用Json传数据的一种方法,在我的使用中,主要包括下面四个部分(我个人喜好使用maven这类型工具进行项 ...
- springmvc中RequestMapping的解析
在研究源码的时候,我们应该从最高层来看,所以我们先看这个接口的定义: package org.springframework.web.servlet; import javax.servlet.htt ...
- 9.springMVC中的拦截器
springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...
随机推荐
- Windows Class Styles
CS_VREDRAW:当窗口水平方向的宽度变化时重绘整个窗口 CS_HREDRAW:当窗口垂直方向的宽度变化时重绘整个窗口 CS_DBLCLKS:指针在属于此类的窗体内部,并且用户双击时,收到一个双击 ...
- Laravel save部分字段失效的bug问题解决
问题描述:今天在编写api的更新部分,发现有部分字段怎么更新都更新不上去. 问题排查: 经过多次测试,发现每次提交只能更新部分字段,字段分别为:id,user_id,device_room_id,na ...
- LeetCode 腾讯精选50题--数组中的第K个最大元素
好吧,不得不承认,书上看到的始终不是自己的,只有亲身时间过才会明白该怎么操作. 找数组中第K个最大元素,简而言之就是先排序,不论使用哪种算法,都需要先排序,确认位置,由于数组可以通过下标直接访问,所以 ...
- python之uWSGI和WSGI
WSGI协议 首先弄清下面几个概念:WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web ...
- [LeetCode]1089. Duplicate Zeros
Given a fixed length array arr of integers, duplicate each occurrence of zero, shifting the remainin ...
- Linux 下vim命令详解
原博文:https://www.cnblogs.com/zknublx/p/6058679.html 高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的: :qx ...
- dedecms 上传目录路径
DedeCms已经升级到5.7版本了..可惜附件的目录还是不统一,比如我们从后台把附件目录调整为Ym(默认为Ymd)然而我们的附件路径依然是不一样的比如:Ymd代表年月日从文章里上传路径为:/Ym/1 ...
- ZooKeeper--动物管理员
复杂的软件集群系统从来绕不开高可用.负载均衡等问题,大数据系统更是如此. 高可用:计算机系统的可用性定义为系统保持正常运行时间的百分比,具体手段有自动检测,自动切换,自动恢复等. 负载均衡:主要解决单 ...
- django-spirt 论坛主题
官方文档 新建项目 django_sprit 文件夹 cd django_sprit pip install django-spirit spirit startproject mysite cd m ...
- LNMP安装与配置之CentOS7的安装。
LNMP与LAMP是我们常见的两种网站服务器架构.LNMP代表的就是Linux系统下Nginx+MySQL+PHP/Python,LAMP代表的则是Linux系统下Apache+MySQL+PHP/P ...