`

Spring入门19 - ModelAndView类别

阅读更多
入门 19 - ModelAndView类别

 ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。
 最简单的ModelAndView是持有View的名称返回,之后View名称被view resolver,也就是实作org.springframework.web.servlet.View接口的实例解析,例如 InternalResourceView或JstlView等等:

ModelAndView(String viewName)


 如果您要返回Model对象,则可以使用Map来收集这些Model对象,然后设定给ModelAndView,使用下面这个版本的ModelAndView:

ModelAndView(String viewName, Map model)


 Map对象中设定好key与value值,之后可以在视图中取出,如果您只是要返回一个Model对象,则可以使用下面这个ModelAndView版本:

ModelAndView(String viewName, String modelName, Object modelObject)


 藉由modelName,您可以在视图中取出Model并显示。
 ModelAndView类别提供实作View接口的对象来作View的参数:

ModelAndView(View view)

ModelAndView(View view, Map model)

ModelAndView(View view, String modelName, Object modelObject)


 一个例子是org.springframework.web.servlet.view.RedirectView,ModelAndView预设是使 用forward来转发请求结果至视图,使用RedirectView的话,则会使用redirect将请求重导至视图,例如:



public ModelAndView handleRequest(....) … {

    ....

  

    return new ModelAndView(new RedirectView(this.getViewPage()));

}

....


 在这边,viewPage的地址是从服务器网页根目录开始指定,而不是Web应用程序的根目录,所以您的getViewPage()传回的地址必须像是 /springapp/pages/index.htm这样的地址,其中springapp是您的Web应用程序目录。
 使用forward的话,网址列上并不会出现被转发的目标地址,而且forward是在Web应用程序之内进行,可以访问Web应用程序的隐藏目录,像是WEB-INF,然而forward只能在Web应用程序中进行,不能指定至其它的Web应用程序地址。
 使用redirect的话,是要求客户端浏览器重新发出一个指定的请求地址,因此网址列上会出现被重导的目录地址,重导的请求是由浏览器发出,所以不能 访问Web应用程序中的隐藏目录,像是WEB-INF,然而重导是重新要求一个网页,所以可以指定至其它的Web应用程序地址。
 DispatcherServlet会根据传回的ModelAndView来解析View名称,并处理给予的Model。View名称的解析是委托给实 作org.springframework.web.servlet.ViewResolver接口的实例,ViewResolver接口定义如下:

public interface ViewResolver {

    public view resolveViewName(String, Locale locale) throws ServletException;

}


 ViewResolver的一个实例是InternalResourceViewResolver,名称解析完之后,实际的View绘制与Model转 换处理是交给实作org.springframework.web.servlet.View的实例,View接口如下:

public interface View {

    public void render(Map model, HttpServletResquest resquest, HttpServletResponse response) throws ServletException, IOException;

}


分享到:
评论

相关推荐

    spring-framework-master

    3. **Web模块**:包含Web和Web-Servlet模块,为基于Servlet的Web应用提供了基础支持,如DispatcherServlet、ModelAndView等。 4. **AOP(面向切面编程)模块**:提供了面向切面的编程实现,允许开发者定义“切面”...

    spring-web-5.2.3.RELEASE和spring-webmvc-5.2.3.RELEASE

    视图通常由模板引擎(如JSP、Thymeleaf或Freemarker)渲染,Spring MVC提供了ModelAndView或者Model接口来管理模型数据。 总的来说,Spring Web和Spring Web MVC是Spring框架的重要组件,它们为Java Web开发提供了...

    spring-mvc开发所有jar包【4.3.4】

    3. **spring-webmvc-4.3.4.RELEASE.jar**:Spring MVC的主要实现模块,负责处理HTTP请求和响应,提供了DispatcherServlet、ModelAndView、HandlerMapping、ViewResolver等关键组件,实现了MVC模式。 4. **spring-...

    spring-framework-bom源码

    1. **依赖管理**:Spring Framework BOM主要负责定义Spring家族所有模块的版本,包括Spring Core、Spring Beans、Spring Context、Spring AOP、Spring JDBC等。通过在你的Maven `dependencyManagement` 部分引入BOM...

    spring-mvc-showcase

    《Spring MVC 展示应用深度解析》 Spring MVC 是 Spring 框架的重要组成部分,它为构建基于模型-视图-控制器(MVC)模式的Web应用程序提供了强大的支持。"spring-mvc-showcase"项目是Spring官网提供的一个实战示例...

    Spring MVC step-by-step 源码

    本资源"Spring MVC step-by-step 源码"是针对初学者准备的入门教程,通过实际项目"springapp"来帮助理解Spring MVC的工作原理。 在MyEclipse环境下开发的"springapp"项目,涵盖了Spring MVC的基础配置和核心组件。...

    spring-framework-3.0.5.RELEASE-dependencies

    此外,还可能包含对其他流行框架和库的支持,如SpringMvc的DispatcherServlet、ModelAndView等,以及对第三方技术如Apache Commons、log4j的日志管理等。 标签"spring-frame"则直接指向了Spring框架本身,强调了本...

    spring-framework-2.5.6

    2.5.6版本在控制器、模型、视图的交互上做了优化,引入了更强大的处理器映射器和视图解析器,增强了ModelAndView对象的功能。此外,对注解的支持让开发者可以通过@Controller、@RequestMapping等注解快速创建控制器...

    官方原版spring-framework-5.0.4.RELEASE.rar

    5. **Web模块**:Spring Web模块支持创建MVC风格的Web应用,包括DispatcherServlet、ModelAndView、ViewController等概念,使得处理HTTP请求变得更加便捷。 6. **Spring MVC**:Spring的Model-View-Controller架构...

    spring-mvc-study.zip

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。在本项目"spring-mvc-study.zip"中,我们可以深入理解并实践Spring MVC的核心概念和技术。 首先,Spring MVC是Spring...

    spring-framework-5.0.2.RELEASE-中文注释版-终极完美版.rar

    Spring框架由多个模块组成,包括Spring Core、Spring Beans、Spring AOP、Spring JDBC、Spring ORM、Spring Web和Spring MVC等。Spring Core是基础,提供了容器服务,如Bean工厂和ApplicationContext,负责对象的...

    spring-framework-3.2.x-for-eclipse.rar

    了解DispatcherServlet、HandlerMapping、ModelAndView等组件的工作流程,有助于我们设计高效的Web应用。 4. **数据访问**:Spring支持多种数据库访问方式,包括JDBC、ORM(Hibernate、MyBatis)等。了解Spring如何...

    spring-framework-4.1.6.RELEASE-dist.zip

    在Web MVC方面,Spring 4.1.6增强了ModelAndView对象,支持异步处理,提供了更好的异常处理机制,并优化了视图解析。此外,对RESTful服务的支持也得到了加强,使得构建RESTful API更加便捷。 5. **数据访问**: ...

    spring-framework-4.0.3.RELEASE

    4. **Web MVC增强**:包括ModelAndView的改进,视图解析器的优化,以及更灵活的MVC配置,使得Web应用程序的开发更加高效。 三、Spring Framework的应用实践 1. **配置管理**:通过XML或Java配置,以及基于注解的...

    spring-framework-4.0.1.BUILD-SNAPSHOT-dist

    Spring MVC是Spring框架中的Web层组件,4.0.1版本对其进行了优化,包括增强的ModelAndView处理,以及更灵活的视图解析。此外,Spring Data项目也在这个版本中有了进步,它简化了数据库访问,支持多种数据存储,包括...

    spring-framework-3.0.5.RELEASE

    - **ModelAndView**:控制器处理完成后返回的模型和视图对象,包含处理结果和要展示的视图名称。 - **@RequestMapping**:用于映射HTTP请求到特定的方法,可以指定URL路径、HTTP方法等。 - **ViewResolver**:视图...

    spring-2.0.8-sources.jar.zip

    在2.0.8中,Spring MVC引入了ModelAndView类,使得模型和视图可以更清晰地分离,同时支持了更多的视图技术,如JSP、FreeMarker等。此外,它还提供了强大的数据绑定和校验功能。 五、事务管理 Spring 2.0.8的事务...

    translation-spring-mvc-4-documentation, Spring MVC 4.2.4 RELEASE 中文文档完整翻译稿.zip

    Spring MVC通过ModelAndView对象实现模型和视图的交互。 数据绑定允许我们将HTTP请求参数自动绑定到控制器方法的参数上,减少了手动获取和转换数据的工作。同时,Spring MVC还提供了强大的验证功能,可以对输入数据...

    spring-framework-5.2.25.RELEASE.zip

    `ModelAndView`用于封装模型数据和视图信息,最后由`ViewResolver`解析并渲染视图。 在事务管理方面,Spring提供了强大的支持。`PlatformTransactionManager`是事务管理的核心接口,如`...

Global site tag (gtag.js) - Google Analytics