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 常用视图解析器列表
在开发中,常用的视图又JSP,Velocity,freemarker等。
InternalResourceViewResolver视图解析器常用来解析JSP视图。注意:(1)该解析器要注意设置好优先级,该解析器不管有没有解析成功都会返回视图,而不是null,如果解析不成功,低优先级的视图解析就得不到执行。
2.视图类
不同的前端显示技术都有其对应的 Java 视图类。如IntenalResourceView视图类表示JSP视图。FreeMarkerView表示Freemarker视图。
一、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 等 . |
InternalResourceViewResolver | UrlBasedViewResolver 的子类,通常用于查找 JSP(类 InternalResourceView)和 JSTL(类 JstlView,InternalResourceView 的子类)等视图。 |
VelocityViewResolver /FreeMarkerViewResolver | UrlBasedViewResolver 的子类分别用于支持 Velocity(类 VelocityView)和 FreeMark 视图(类 FreeMarkerView)。 |
ContentNegotiatingViewResolver | 接口 ViewResolver 的实现,用于根据请求文件的后缀名或请求的 header 中的 accept 字段查找视图。 |
InternalResourceViewResolver视图解析器常用来解析JSP视图。注意:(1)该解析器要注意设置好优先级,该解析器不管有没有解析成功都会返回视图,而不是null,如果解析不成功,低优先级的视图解析就得不到执行。
2.视图类
不同的前端显示技术都有其对应的 Java 视图类。如IntenalResourceView视图类表示JSP视图。FreeMarkerView表示Freemarker视图。
相关文章推荐
- Java记录 -51- 栈和队列
- ConcurrentHashMap 浅层次总结
- jdk代理(一) 静态代理和动态代理使用
- Java 字符集与编码
- Java 基础知识 - 知识导图
- 异常(Exception)JAVA072-076
- eclipse 安装 java 内存分析工具 Memory Analyzer
- 简单选择排序(与改进)
- Java记录 -50- ArrayList与LinkedList比较分析
- Java实现Strassen
- java线程简析
- struts2 表单标签——form
- JAVA 音乐文件读取工具
- Java锁机制(二)
- java内部类
- new的奥秘:Java中new关键字与类加载器
- JAVA创建String对象问题
- java线程中异常的处理 -Java 7 Concurrency Cookbook 读书笔记
- InvocationTargetException异常
- Java 异常处理机制和集合框架