您的位置:首页 > 编程语言 > Java开发

Springmvc视图解析器(一)resolver解析器和view视图 【Springmvc】

2015-11-01 11:23 477 查看
参考:https://www.ibm.com/developerworks/cn/java/j-lo-springview/

一、Springmvc视图和解析简介

Spring视图和视图解析器是Springmvc中的重要概念。如下是springmvc对于一个web请求的一个过程。



图1.1springmvc解析一个url请求

如图1.1所示:

(1)一个web请求过来,被相应的DispatcherServlet(分发器)拦截,然后spring调用相应的HandlerMapping,注解等映射到对应的Controller上。

(2)控制器调用相应的service处理业务请求,最终返回视图名和模型即ModelAndView。

(3)spring调用视图解析器,根据springmvc-servlet.xml中配置的多个视图解析器逐个解析,即调用canHandle方法解析。最终渲染整个视图,返回给前端显示。

二、Springmvc常用视图和视图解析器

1.视图解析器

如图2.1所示,是视图解析器的继承树。



图2.1 Resolver继承树


表 2.1 Spring 常用视图解析器列表

视图解析器描述
XmlViewResolver接口 ViewResolver 的实现,从 XML 配置文件中查找视图实现(默认 XML 配置文件为 /WEB-INF/views.xml).
ResourceBundleViewResolver接口 ViewResolver 的实现,用于从 properties 文件中查找视图。.
UrlBasedViewResolver接口 ViewResolver 的实现,用于根据请求的 URL 路径返回相应的视图,该视图需为抽象类 AbstractUrlBasedView 的实现,它还有些子类,如 InternalResourceView 和 JstlView 等 .
InternalResourceViewResolverUrlBasedViewResolver 的子类,通常用于查找 JSP(类 InternalResourceView)和 JSTL(类 JstlView,InternalResourceView 的子类)等视图。
VelocityViewResolver /FreeMarkerViewResolverUrlBasedViewResolver 的子类分别用于支持 Velocity(类 VelocityView)和 FreeMark 视图(类 FreeMarkerView)。
ContentNegotiatingViewResolver接口 ViewResolver 的实现,用于根据请求文件的后缀名或请求的 header 中的 accept 字段查找视图。
在开发中,常用的视图又JSP,Velocity,freemarker等。
InternalResourceViewResolver视图解析器常用来解析JSP视图。注意:(1)该解析器要注意设置好优先级,该解析器不管有没有解析成功都会返回视图,而不是null,如果解析不成功,低优先级的视图解析就得不到执行。

2.视图类

不同的前端显示技术都有其对应的 Java 视图类。如IntenalResourceView视图类表示JSP视图。FreeMarkerView表示Freemarker视图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: