48--曾用过的View
在Spring MVC架构中View实际上是有多种选择的。JSP是首选的view,实际上在J2EE规范中JSP已经是制定的页面模板技术了。在很多时候,俨然都已经成了一种标准。我在09年做电子商城时,在Spring mvc中view使用的就是Velocity。Velocity也同样归属于模板技术,它们使用语法和JSP 2.0中很相同。当然还有一种FreeMarker的和它很是相似,另外PDF和Excel也可以作为视图使用,后面这几种我都没有用过。在视图这个章节,主要是说说在Spring的框架下,如果使用它的。
在中Spring中的ViewResolver,可以从View中把Contrller解脱出来(解耦)。只要在控制器中,简单的指定一个View的逻辑名称,Spring就能把这个名称解析为指定的View类型(view type)。之前谈到了ModelAndView类,由控制器返回的类,该类包含了一个view。View接口会预处理请示,并把它传递给你事先配置好的View。在Spring中View Resolver有好几个分别是:
AbstractCachingViewResolver:该视图解析器可以自定义并且可使用缓存。
ResourceBundleViewResolver这个比较熟,因为用的最多主要使用各种view,像jsp和velocity就是通过该实现。
UrlBasedViewResolver主要用于解析URL而不需要做映射处理。InternalResourceViewResolver使用JSP还有和velocity类似的模板技术和Tiles,jstlview。
还有一个就是VelocityViewResolver这个就是支持Velocity模板技术的。
这里我熟悉view也就是Velociy,当然如果jsp也算的话也是其中一个。Velocity是一个开源项目,它主要用于为浏览器生成动态网页。由于是一种模板技术,可以将它运用在任何需要模板的地方。Velocit是在J2EE容器内运行,和JSP比较它表现出更快的响应和更好的性能。Velocity自带的模板语言和JSP 2.0的EL基本等同。所以在Velocity中,只要你了解过EL表达式,使用其语法还是很简单的。Velocity的原理是,数据放入context后,velocity从中取到数据,然后在页面将其表现出来。
View Resolver配置是需要在web程序的classpath目录中添加velocity.properties文件。该文件就是告诉我们的view应该使用哪种导入模板。在Spring中可以提供VelocityConfigurer类为页面指定一个路径。这样的步骤通常可以在web/WEB-INF下相应的serlvet配置文件配置好velocity中加载模板。然后声明VelocityViewResolver作为应用程序的View Resolver。属性定义当属 exposeSpringMacroHelpers 和requestContextAttribute最为重要。前者是处理表单和验证错误信息的宏操作,后者其实是RequestContext的一个别名。这个类用一般用于messages.properties文件打印本地化的信息。VelocityViewResolver的父是AbstractTemplateViewResolver继承而来的。当然使用velocity时,还需要在*-servlet.xml文件中指定两个bean定义VelocityConfigurer和VelocityViewResolver,当然模板是必须要准备的,还需要用到VTL来编写页面。Velocity所有的页面都是以.VM结尾的。Velocity简练的的语法。使用模板初始加载会快,编译速度也会比JSP快。
(未完待续......)