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

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方法,将视图展示给用户。

 

 

分享到:
评论

相关推荐

    Spring SpringMVC 简单整合

    Spring SpringMVC 简单整合(初学者参考) demo项目对应地址说明 :...ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。

    HandlerMapping HandlerAdapter View ViewResolver类图 矢量图

    HandlerMapping HandlerAdapter View ViewResolver类图 矢量图文件 https://blog.csdn.net/qq_39609993/article/details/105435850

    SpringMVC+Hibernate实例

    &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/&gt; ...

    看透springMvc源代码分析与实践

    8.2.3 创建Controller和view86 8.3 关联spring源代码87 8.4 小结89 第9章 创建Spring MVC之器90 9.1 整体结构介绍90 9.2 HttpServletBean93 9.3 FrameworkServlet95 9.4 DispatcherServlet100 9.5 小结107 ...

    Spring-mvc,例题

    &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/"&gt;&lt;/property&gt; &lt;property name="suffix" value=".jsp"&gt;&lt;/property&gt; &lt;!-...

    SpringMVC笔记(一)

    View:视图 jsp Controller:控制器 Servlet 2. SpringMVC流程图 3. 包含模块 优点:分工明确,扩展灵活 前端控制器(DispatcherServlet) 请求到处理器映射(HandlerMapping) 处理器适配器(HandlerAdapter) 视图...

    spring mvc 3.2 参考文档

    view-controller (MVC)框架是围绕 DispatcherServlet 设计的,并分发请求到处理程序(handler),Spring MVC支持可配置的处理程序映射(handler mapping),视图解析(view resolution)、 区域设置(locale)和主题解析...

    基于SpringBoot+Java+MySQL的新闻爬取发布管理投稿聊天前后台管理系统.zip

    本系统开发采用SpringBoot框架开发,Spring框架提供了构建 Web 应用程序的全功能MVC模块,主要由DispatcherServlet、处理器映射(HandlerMapping)、处理器(Controller)、视图解析器(ViewResolver)、视图(View)组成。...

    Spring MVC 员工管理系统

    ⑤ 由于ModelAndView中包含的是视图逻辑名,DispatcherServlet必须知道这个逻辑名对应的真实视图对象,这项视图解析的工作通过调用ViewResolver来完成; ⑥ 当得到真实的视图对象后,DispatcherServlet将请求分派给...

    Spring MVC 入门实例

    6 &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; 7 8 9 10 11 12 13 14 &lt;prop key="/hello.do"&gt;helloController 15 16 17 18 19 20 &lt;!-- ...

    Spring MVC 学习笔记

    5、 ModelAndView的逻辑视图名交给ViewResolver解析器, ViewResolver解析器把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术; 6、 View会根据传进来的Model模型数据进行渲染,此处的...

    SSM+MAVEN+MYSQL框架整合原理+源码

    ssm框架:包括,springMVC -- spring -- mybatis 运行流程: 1.jsp(view)发送请求 2.通过核心控制器DispatcherServlet调用请求解析器:HandlendMapping对请求进行解析,通过映射关系匹配到Controller层 3.在...

    helloword.rar

    最近学习java,学习使用Springmvc,作为练习写了一个 通过IDEA新建Spring MVC项目设置运行、调试相关...ViewResolver(dispatcher-servlet.xml)添加视图文件(.jsp)通过 Model 向 View 传值,大家可以借鉴,欢迎指导

    sprigmvc图文总结

    SpringMvSpringMVC的主要组件 ...8、前端控制器请求视图解析器(ViewResolver)去进行视图解析。 9、视图解析器向前端控制器返回View。 10、前端控制器对视图进行渲染。 11、前端控制器向用户响应结果。

Global site tag (gtag.js) - Google Analytics