入门 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;
}
View的实作之前用过org.springframework.web.servlet.view.InternalResourceView,另外也还有JstlView、TilesView、VelocityView等等的实作,分别进行不同的表现展处理。
相关推荐
3. **Web模块**:包含Web和Web-Servlet模块,为基于Servlet的Web应用提供了基础支持,如DispatcherServlet、ModelAndView等。 4. **AOP(面向切面编程)模块**:提供了面向切面的编程实现,允许开发者定义“切面”...
视图通常由模板引擎(如JSP、Thymeleaf或Freemarker)渲染,Spring MVC提供了ModelAndView或者Model接口来管理模型数据。 总的来说,Spring Web和Spring Web MVC是Spring框架的重要组件,它们为Java Web开发提供了...
3. **spring-webmvc-4.3.4.RELEASE.jar**:Spring MVC的主要实现模块,负责处理HTTP请求和响应,提供了DispatcherServlet、ModelAndView、HandlerMapping、ViewResolver等关键组件,实现了MVC模式。 4. **spring-...
1. **依赖管理**:Spring Framework BOM主要负责定义Spring家族所有模块的版本,包括Spring Core、Spring Beans、Spring Context、Spring AOP、Spring JDBC等。通过在你的Maven `dependencyManagement` 部分引入BOM...
《Spring MVC 展示应用深度解析》 Spring MVC 是 Spring 框架的重要组成部分,它为构建基于模型-视图-控制器(MVC)模式的Web应用程序提供了强大的支持。"spring-mvc-showcase"项目是Spring官网提供的一个实战示例...
本资源"Spring MVC step-by-step 源码"是针对初学者准备的入门教程,通过实际项目"springapp"来帮助理解Spring MVC的工作原理。 在MyEclipse环境下开发的"springapp"项目,涵盖了Spring MVC的基础配置和核心组件。...
此外,还可能包含对其他流行框架和库的支持,如SpringMvc的DispatcherServlet、ModelAndView等,以及对第三方技术如Apache Commons、log4j的日志管理等。 标签"spring-frame"则直接指向了Spring框架本身,强调了本...
2.5.6版本在控制器、模型、视图的交互上做了优化,引入了更强大的处理器映射器和视图解析器,增强了ModelAndView对象的功能。此外,对注解的支持让开发者可以通过@Controller、@RequestMapping等注解快速创建控制器...
《Spring Web模块详解——基于3.1.1.RELEASE版本》 在Java世界里,Spring框架无疑是企业级应用开发的首选。它以其强大的功能、灵活的设计以及丰富的生态系统赢得了广大开发者的心。Spring框架的核心之一就是Spring ...
5. **Web模块**:Spring Web模块支持创建MVC风格的Web应用,包括DispatcherServlet、ModelAndView、ViewController等概念,使得处理HTTP请求变得更加便捷。 6. **Spring MVC**:Spring的Model-View-Controller架构...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。在本项目"spring-mvc-study.zip"中,我们可以深入理解并实践Spring MVC的核心概念和技术。 首先,Spring MVC是Spring...
Spring框架由多个模块组成,包括Spring Core、Spring Beans、Spring AOP、Spring JDBC、Spring ORM、Spring Web和Spring MVC等。Spring Core是基础,提供了容器服务,如Bean工厂和ApplicationContext,负责对象的...
了解DispatcherServlet、HandlerMapping、ModelAndView等组件的工作流程,有助于我们设计高效的Web应用。 4. **数据访问**:Spring支持多种数据库访问方式,包括JDBC、ORM(Hibernate、MyBatis)等。了解Spring如何...
- **ModelAndView**:用于传递模型数据和视图名。 3. **数据访问**: - **JDBC抽象**:简化数据库操作,避免大量模板代码。 - **ORM(Object-Relational Mapping)支持**:包括Hibernate、MyBatis等,使Java对象...
在Web MVC方面,Spring 4.1.6增强了ModelAndView对象,支持异步处理,提供了更好的异常处理机制,并优化了视图解析。此外,对RESTful服务的支持也得到了加强,使得构建RESTful API更加便捷。 5. **数据访问**: ...
4. **Web MVC增强**:包括ModelAndView的改进,视图解析器的优化,以及更灵活的MVC配置,使得Web应用程序的开发更加高效。 三、Spring Framework的应用实践 1. **配置管理**:通过XML或Java配置,以及基于注解的...
Spring MVC是Spring框架中的Web层组件,4.0.1版本对其进行了优化,包括增强的ModelAndView处理,以及更灵活的视图解析。此外,Spring Data项目也在这个版本中有了进步,它简化了数据库访问,支持多种数据存储,包括...
- **ModelAndView**:控制器处理完成后返回的模型和视图对象,包含处理结果和要展示的视图名称。 - **@RequestMapping**:用于映射HTTP请求到特定的方法,可以指定URL路径、HTTP方法等。 - **ViewResolver**:视图...
在2.0.8中,Spring MVC引入了ModelAndView类,使得模型和视图可以更清晰地分离,同时支持了更多的视图技术,如JSP、FreeMarker等。此外,它还提供了强大的数据绑定和校验功能。 五、事务管理 Spring 2.0.8的事务...
Spring MVC通过ModelAndView对象实现模型和视图的交互。 数据绑定允许我们将HTTP请求参数自动绑定到控制器方法的参数上,减少了手动获取和转换数据的工作。同时,Spring MVC还提供了强大的验证功能,可以对输入数据...