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快。

                                                       (未完待续......)

熬之滴水穿石:Spring--精简的J2EE(6)的更多相关文章

  1. 熬之滴水穿石:Spring--精简的J2EE(5)

                                   47--Spring的MVC 在Spring的框架中也存在MVC这样的模式,在Spring下有2个这样的控制器一个叫Controller, ...

  2. 熬之滴水穿石:JSP--HTML中的JAVA代码(6)

                                                                       39--JSTL 在JSP编码中需考虑的一种方法,因为这种方法可以 ...

  3. spring入门教程——笔记

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  4. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  5. Spring框架IOC容器和AOP解析

    主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置  一.S ...

  6. Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

    模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...

  7. 13.SpringMVC和Spring集成(一) && 14.SpringMVC和Spring集成(二)

    1.概念 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,Spring致力于J2EE应用的各层的解决方案,Spring是企业应用开发的“一站式”选择,并贯 ...

  8. Spring实战1:Spring初探

    主要内容 Spring的使命--简化Java开发 Spring容器 Spring的整体架构 Spring的新发展 现在的Java程序员赶上了好时候.在将近20年的历史中,Java的发展历经沉浮.尽管有 ...

  9. 什么是Spring?Spring是什么?

    Spring概述: Spring是一个开源框架,是为了解决企业应用程序开发复杂性而开发的. 从简单性.可測试性和松耦合的角度而言,不论什么java应用都能够从Spring中受益. 简而言之,Sprin ...

随机推荐

  1. hdu 4712 Hamming Distance bfs

    我的做法,多次宽搜,因为后面的搜索扩展的节点会比较少,所以复杂度还是不需要太悲观的,然后加上一开始对答案的估计,用估计值来剪枝,就可以ac了. #include <iostream> #i ...

  2. javacsript (十一) 对象

    他的对象的概念和python的字典的格式一样, JavaScript 对象 对象由花括号分隔.在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义.属性由逗号分隔: var ...

  3. RAID的解释(附购买链接)

     现在使用RAID6  早期 raid5+1hotspare   小型机有存储备份 就是这么多年没有恢复过~ 金融行业 数据万金  是的 磁盘阵列柜换控制器  型号太老 缓存数据问题 把存储都下线了 ...

  4. Lucene.Net 2.3.1开发介绍 —— 二、分词(二)

    原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(二) 1.2.分词的过程 1.2.1.分词器工作的过程 内置的分词器效果都不好,那怎么办?只能自己写了!在写之前当然是要先看看内置的分词 ...

  5. 【Demo 0007】导航控制器

    本章学习要点       1.  了解导航控制器基本知识:       2.  掌握导航控制器基本用法:       3.  掌握导航控制器基本用法; 

  6. 【IOS实例小计】图像移动--可扩展为动态实现图标变化

    预备知识: 1.页面切换: 从一个ViewController切换到另一个ViewController有下面几种方法: (1)self.view addSubview:(加载的新页面);      相 ...

  7. [Cacti] memcache安装执行、cacti监控memcache实战

    简单介绍 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的.眼下全世界不少人使用这个缓存项目来构建自己大负载的站点,来分担数据库的压力. Memcache官方站 ...

  8. cocos2d-x中使用JNI的调用JAVA方法

    用cocos2d-x公布Android项目时.都应该知道要用JAVA与C/C++进行交互时会涉及到JNI的操作(Java Native Interface).JNI是JAVA的一个通用接口.旨在本地化 ...

  9. 15个最好的HTML5前端响应式框架(2014)

    文中的多个框架基于SASS创建,SCSS是一种比LESS更简洁的样式表编程语言,它能够编绎成CSS,可复用CSS代码,声明变量,甚至是函数,类Ruby/Python的语法.參见: LESS vs SA ...

  10. 解决Qt程序在Linux下无法输入中文的办法

    解决Qt程序在Linux下无法输入中文的办法 一位网友问我怎样在Linux的Qt的应用程序中输入中文,我一開始认为不是什么问题,可是后面自己尝试了一下还真不行.不仅是Qt制作的应用程序,就连Qt Cr ...