springmvc 视图和视图解析器相关类介绍

springmvc 通过@RequestMapping路由的方法进行业务处理之后,会有返回值,返回值经过视图解析器解析之后,生成一个view,然后再由view进行渲染成具体的jsp页面,excel,pdf,json,xml等。

来看看视图解析器ViewResolver接口

public interface ViewResolver {
    View resolveViewName(String viewName, Locale locale) throws Exception;
}

只提供一个方法,通过视图名和本地化对象得到一个视图对象,我们来看看视图对象接口

public interface View {

    String RESPONSE_STATUS_ATTRIBUTE = View.class.getName() + ".responseStatus";

    String PATH_VARIABLES = View.class.getName() + ".pathVariables";

    String getContentType();

    void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception;

}

俩个主要的方法,一个是getContentType,获取媒体类型,一个是render渲染视图,将模型数据渲染成具体的视图。视图的主要工作就是根据媒体类型将模型数据渲染成具体的视图。

ViewResolver有多种解析策略,每种解析策略多有一种对应的视图解析器实现类以及实现了Ordered接口,可以通过配置order来指定多个视图解析器解析视图名的顺序,我们来看看有哪些解析策略

视图解析器实现类 说明
beanNameViewResolver 常用,将视图名解析为一个bean,视图名是bean的id
XmlViewResolver 和beanNameViewResolver类似,它和beanNameViewResolver的区别是bean的定义是放在xml文件中,而不是DispatchServert的配置文件中
ResourceBundleViewResolver 可以利用该类为不同本地化类型提供不同的解析结果
InternalResourceViewResolver 常用,一般通过该类配置前缀和后缀,然后解析为一个URL文件,例如jsp页面,解析优先级最低
XsltViewResolver 将视图名解析为一个指定的XSLT样式表的URL文件
JasperReportsViewResolver JasperReports是一个基于java的开源报表工具,该解析器将视图名解析为报表文件对应的路径
FreeMarkerViewResolver 解析基于FreeMarker模版技术的模版文件
VelocityViewResovler,VelocityLayoutViewResovler 解析为基于Velocity模版技术的模版文件
ContentNegotiatingViewResovler 常用,内容协商视图解析器,它不负责具体的视图解析,而且根据请求的媒体类型,从注册的视图解析器中选择一个合适的解析器来将视图解析,解析优先级最高

视图解析器将视图名解析成视图之后,视图的渲染又有不同的渲染策略,每种渲染策略都有对应的实现类,我们来看看有哪些策略

视图实现类 说明
InternalResourceView 将jsp或其他资源封装成一个视图,这是InternalResourceViewResolver解析成的视图
JstlView 如果jsp文件中需要用到JSTL国际化标签功能,则需要使用该视图类,而非InternalResourceView视图类
XsltView XSTL驱动的视图
TilesView 基于Tiles页面布局的视图
TilesJstlView 如果Tiles模版的jsp组成文件使用到了JSTL了,则需要用该视图替换TilesView
AbstractExcelView Excel视图抽象类,开发者需要继承AbstractExcelView,获取视图模型进行填充,实现自己的文档视图,需要依赖POI
AbstractJExcelView 和AbstractExcelView只不过他是依赖JExcelAPI
AbstractPdfStamperView PDF文档视图抽象类,通过AcroForm对PDF文档进行操作
AbstractPdfView PDF文档视图抽象类,可以通过该抽象类实现自己的PDF文档视图,依赖iText
FreeMarkView 使用FreeMark模版引擎的视图
VelocityLayoutView 使用Velocity模版引擎的视图
VelocityView 使用Velocity模版引擎的视图
ConfigurableJasperReportsView 使用java JasperReports报表技术的视图
JasperReportsCsvView 使用java JasperReports报表技术的视图
JasperReportsHtmlView 使用java JasperReports报表技术的视图
JasperReportsMultiFormatView 使用java JasperReports报表技术的视图
JasperReportsPdgView 使用java JasperReports报表技术的视图
JasperReportsXlsView 使用java JasperReports报表技术的视图
MarshallingView 通过oxm和Marshaller技术将模型数据以xml方式输出
MappingJackson2JsonView 将模型数据通过Jackson开发框架的ObjectMapper已JSON方式输出
MappingJackson2XmlView 将模型数据通过Jackson开发框架的ObjectMapper已XML方式输出
redirectView 通过redirect:和forword:前缀进行重定向的视图

你可能感兴趣的:(视图,视图解析器)