`
youyu4
  • 浏览: 440315 次
社区版块
存档分类
最新评论

SpringMVC之ViewResolver和View

阅读更多

SpringMVC之ViewResolver和View

 

配置文件中和ViewResolve有关的部分

 

<!--视图解析器-->    
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    
    <!-- webroot到一指定文件夹文件路径 -->    
    <property name="prefix" value="/"/>    
    <!-- 视图名称后缀  -->    
    <property name="suffix" value=".jsp"/>    
</bean>  

 

 

自己写的处理器处理用户的请求,在处理完请求后返回一个ModelAndView对象

package com.wangbiao.springMVC;  
  
import javax.servlet.ServletContext;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
import org.springframework.web.servlet.ModelAndView;  
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;  
  
public class HelloWorld extends  MultiActionController{  
  
    public ModelAndView sayHelloWorld(HttpServletRequest request, HttpServletResponse response) {  
        String param = request.getParameter("param");  
        System.out.println("springMVC测试:helloWorld;"+param);  
        ModelAndView mv = new ModelAndView();  
        mv.addObject("content", "springMVC HelloWorld:"+param);  
        mv.setViewName("springMVC/helloWorld");  
        ServletContext ctx = this.getServletContext();    
        return mv;  
    }  
  
}  

 

可以看出处理器返回MdoelAndView对象并向此对象中设一个viewName,ViewName是逻辑视图名,还向MdoelAndView中传入了数值,其实就是向MdoelAndView传入了一个Map对象,这个Map对象就是我们常说的数据模型Modle。

 

 

 

ViewResolve和View的作用

 

      1. ViewResolve的作用就是通过解析MdoelAndView,将MdoelAndView中的逻辑视图名变为一个真正的View对象,并将MdoelAndView中的Model取出。

 

      2. View的作用就是在获取到ViewResolve传来的View和Model,对Model进行渲染,通过View对象找到要展示给用户的物理视图,将渲染后的视图展示给用户。用很直白的话将就是将数据通过request存储起来,找到要展示给用户的页面,将这些数据放在页面中,并将页面呈现给用户。

 

 

 

ViewResolve的初始化流程

 

      1. ViewResolve和前面的HandlerMapping,HandlerAdapter一样,首先是在启动服务的时候,IOC容器会根据配置文件里面的ViewResolve相关信息对ViewResolve进行实例化。

      

      2. 然后存储到DispatcherServlet的 List<ViewResolver> viewResolvers属性中。

      

      3. 当要解析MdoelAndView对象的时候,会遍历viewResolvers,从中取出一个viewResolver对进行解析。

      

      4. 要是解析出View对象,就不再进行遍历,要是解析出的View对象是空的,接着从viewResolvers中取出viewResolver对MdoelAndView对象进行解析。

 

 

 

 ResolverView和View相关类的介绍

 

      1.类AbstractCachingViewResolver

        AbstractCachingViewResolver实现了ResolverView接口。AbstractCachingViewResolver类的主要作用就是在缓存中通过逻辑视图名查找视图,如果没有查找到,就去创建一个新的视图,并将该视图存入缓存中。

      

      2.类UrlBasedViewResolver

        UrlBasedViewResolver继承了AbstractCachingViewResolver。UrlBasedViewResolver的主要作用是创建一个View的对象,这个View的对象可以在配置文件中配置,也可以取默认的,默认的就是JstlView,读取配置文件中对ResolverView的配置,根据逻辑视图名找到真正视图的路径,将路径存入View对象中。这样就得到了一个View对象。

      

      3.类AbstractView

        AbstractView实现了View接口。AbstractView的主要作用是渲染视图和将model中的数据取出来并传给页面。AbstractView渲染视图只是实现了一个抽象方法,该功能主要靠AbstractView的孙子类InternalResourceView来实现

      

      4.AbstractUrlBasedView类

        主要是起到一个承上启下的作用,其他的作用这个我也不知道。

      

      5.InternalResourceView类

        InternalResourceView继承了AbstractUrlBasedView,InternalResourceView的主要作用就是拿到视图的路径,创建一个RequestDispatcher对象。将视图路径给RequestDispatcher,RequestDispatcher条用forward方法,将视图展示给用户。

 

 

分享到:
评论

相关推荐

    SpringMVC PPT_springmvc_

    总结,SpringMVC 以其强大的功能和灵活性,成为了 Java Web 开发的主流框架之一。通过理解并熟练掌握上述知识点,开发者可以构建出高效、可维护的 Web 应用程序。本教程的 PPT 将详细讲解这些内容,帮助你快速上手 ...

    SpringMVC之用户管理的源代码

    在这个“SpringMVC之用户管理的源代码”案例中,我们将深入探讨如何使用SpringMVC来实现一个基础的用户管理系统。 首先,我们需要了解SpringMVC的基本组件: 1. **DispatcherServlet**:它是SpringMVC的前端控制器...

    springmvc4+mybatis+mybatisplus整合

    SpringMVC是Model-View-Controller设计模式的一种实现,它将业务逻辑、数据和用户界面分离,提高了代码的可维护性和可测试性。核心组件包括DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、...

    SpringMVC完整使用教程

    其核心组件包括 DispatcherServlet、HandlerMapping、Controller、ViewResolver 和 View。DispatcherServlet 负责接收请求并分发到相应的处理器,而 HandlerMapping 用来解析请求与 Controller 之间的映射关系。 ##...

    精通SpringMVC

    SpringMVC的核心组件包括DispatcherServlet、Controller、Model、ViewResolver、View等。DispatcherServlet作为入口点,负责接收HTTP请求并分发到相应的处理器。Controller处理业务逻辑,Model存储数据,...

    SpringMVC+Mybatis demo

    SpringMVC是Model-View-Controller架构模式的一种实现,用于构建Web应用程序。它的主要组件包括DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)和ViewResolver...

    springmvc实战项目sample

    - **Model-View-Controller**(MVC)架构模式:SpringMVC遵循MVC设计模式,将业务逻辑、数据和用户界面分离,提高代码可维护性。 - **Mapping Dispatcher**:映射调度器,根据请求URL和指定的映射规则找到对应的...

    SpringMVC+sqlitejdbc的jar集合

    SpringMVC和SQLiteJDBC是两个在Java开发中常见的组件,它们分别用于构建Web应用程序和服务端数据存储。这里我们详细探讨这两个技术以及它们如何协同工作。 **SpringMVC** SpringMVC是Spring框架的一个模块,专门...

    SpringMVC代码

    它遵循Model-View-Controller(MVC)设计模式,有助于将业务逻辑、数据处理和用户界面分离,提高代码的可维护性和可测试性。对于初学者来说,理解并掌握SpringMVC的基本概念和使用方法至关重要。 1. **MVC模式**:...

    springmvc jar包

    SpringMVC的核心组件包括DispatcherServlet、Controller、Model、View和ViewResolver。以下是对这些关键组件的详细解释: 1. DispatcherServlet:这是SpringMVC的前端控制器,它负责接收HTTP请求,并根据请求信息...

    SpringMVC 实例

    首先,SpringMVC 的核心组件包括 DispatcherServlet(前端控制器)、Controller(控制器)、Model(模型)、View(视图)和 HandlerMapping(处理器映射)。DispatcherServlet 接收请求并分派到相应的 Controller,...

    图书管理系统(SpringMVC)

    “jb51.net.txt”和两个URL文件可能指向相关的教程资源,如“脚本之家”和“服务器软件”网站,提供了SpringMVC的更多学习资料和技术支持。 通过这个项目,初学者不仅可以学习SpringMVC的基本概念和使用,还能了解...

    SpringMVC+ibatis整合

    - **核心组件**:DispatcherServlet、Controller、Model、View和ViewResolver。 - **工作流程**:请求到达DispatcherServlet,它根据请求映射分发到相应的Controller,Controller处理业务逻辑后,返回ModelAndView...

    SpringMVC-demo

    在SpringMVC中,Controller处理请求,Model管理业务逻辑和数据,而View负责渲染结果。 2. **配置文件** 在SpringMVC项目中,通常会有一个`spring-servlet.xml`配置文件,它定义了SpringMVC的组件,如...

    spring和springMvc

    总的来说,Spring和SpringMVC是Java开发中的重要工具,它们提供了强大的功能和灵活的设计模式,使得开发者能够更专注于业务逻辑,而不是底层的基础设施。通过深入学习和理解这两个框架,开发者可以提升其在企业级...

    黑马程序员SpringMVC课堂笔记

    总之,《黑马程序员SpringMVC课堂笔记》全面覆盖了SpringMVC的基本概念、配置、开发模式和实践技巧,对于初学者和进阶者都是宝贵的学习资源。通过学习这份笔记,开发者可以掌握构建高效、可维护的Java Web应用所需的...

    SpringMVC实战

    ModelAndView是SpringMVC提供的一种便捷方式,它可以同时包含Model和View信息。 **5. 视图解析** ViewResolver负责解析视图名,将其转换为实际的视图对象,如JSP页面、FreeMarker模板等。视图名称可以是相对路径,...

    SpringMVC 快速入门

    SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,是 Spring 框架的重要组成部分,用于构建高效、可维护的 MVC(Model-View-Controller)架构的应用程序。在这个快速入门教程中,我们将深入理解 SpringMVC 的核心...

    springMVC初步

    SpringMVC的核心组件包括DispatcherServlet、Controller、Model、View和ViewResolver。DispatcherServlet作为入口点,接收HTTP请求并分发到合适的处理器。Controller是处理请求的具体类,它通常实现了Spring的...

    SpringMVC详细文档,内容通俗易懂,适合学习springMVC的初学者

    MyBatis作为持久层框架,负责SQL的编写和执行,而SpringMVC负责控制流程和业务逻辑。通过Spring的依赖注入,可以将MyBatis的SqlSessionTemplate或SqlSessionFactory注入到Controller或Service中,实现数据访问。 ...

Global site tag (gtag.js) - Google Analytics