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

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

2016-04-12 19:59 453 查看
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文件
JasperReportsViewResolverJasperReports是一个基于java的开源报表工具,该解析器将视图名解析为报表文件对应的路径
FreeMarkerViewResolver解析基于FreeMarker模版技术的模版文件
VelocityViewResovler,VelocityLayoutViewResovler解析为基于Velocity模版技术的模版文件
ContentNegotiatingViewResovler常用,内容协商视图解析器,它不负责具体的视图解析,而且根据请求的媒体类型,从注册的视图解析器中选择一个合适的解析器来将视图解析,解析优先级最高
视图解析器将视图名解析成视图之后,视图的渲染又有不同的渲染策略,每种渲染策略都有对应的实现类,我们来看看有哪些策略

视图实现类说明
InternalResourceView将jsp或其他资源封装成一个视图,这是InternalResourceViewResolver解析成的视图
JstlView如果jsp文件中需要用到JSTL国际化标签功能,则需要使用该视图类,而非InternalResourceView视图类
XsltViewXSTL驱动的视图
TilesView基于Tiles页面布局的视图
TilesJstlView如果Tiles模版的jsp组成文件使用到了JSTL了,则需要用该视图替换TilesView
AbstractExcelViewExcel视图抽象类,开发者需要继承AbstractExcelView,获取视图模型进行填充,实现自己的文档视图,需要依赖POI
AbstractJExcelView和AbstractExcelView只不过他是依赖JExcelAPI
AbstractPdfStamperViewPDF文档视图抽象类,通过AcroForm对PDF文档进行操作
AbstractPdfViewPDF文档视图抽象类,可以通过该抽象类实现自己的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:前缀进行重定向的视图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: