熬之滴水穿石:Spring--精简的J2EE(6)
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)的更多相关文章
- 熬之滴水穿石:Spring--精简的J2EE(5)
47--Spring的MVC 在Spring的框架中也存在MVC这样的模式,在Spring下有2个这样的控制器一个叫Controller, ...
- 熬之滴水穿石:JSP--HTML中的JAVA代码(6)
39--JSTL 在JSP编码中需考虑的一种方法,因为这种方法可以 ...
- spring入门教程——笔记
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...
- 不错的Spring学习笔记(转)
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...
- Spring框架IOC容器和AOP解析
主要分析点: 一.Spring开源框架的简介 二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置 一.S ...
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- 13.SpringMVC和Spring集成(一) && 14.SpringMVC和Spring集成(二)
1.概念 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,Spring致力于J2EE应用的各层的解决方案,Spring是企业应用开发的“一站式”选择,并贯 ...
- Spring实战1:Spring初探
主要内容 Spring的使命--简化Java开发 Spring容器 Spring的整体架构 Spring的新发展 现在的Java程序员赶上了好时候.在将近20年的历史中,Java的发展历经沉浮.尽管有 ...
- 什么是Spring?Spring是什么?
Spring概述: Spring是一个开源框架,是为了解决企业应用程序开发复杂性而开发的. 从简单性.可測试性和松耦合的角度而言,不论什么java应用都能够从Spring中受益. 简而言之,Sprin ...
随机推荐
- ios添加pre和post build action
再vs中,我们可以很方便的再build前.后执行一些脚本为我们做点什么事情.再ios中怎么搞呢,哪必然是对xcode进行操作了.再google搜索了一把,有说操作Scheme的也有说再直接再targe ...
- Android 系统搜索框(有浏览记录)
实现Android 系统搜索框(有浏览记录),先看下效果: 一.配置搜索描述文件 要在res中的xml文件加创建sreachable.xml,内容如下: <?xml version=" ...
- ThinkPhp学习03
原文:ThinkPhp学习03 一.ThinkPHP 3 的输出 (重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出 想分配变量可以使用as ...
- Mysql InnoDB 是IOT表 锁基于索引
</pre>Mysql InnoDB 是IOT表 锁基于索引<pre>
- HDU 1007 近期点对
分治法求近期点对 递归将点不断分成小组.计算最短距离.此时的最短距离不过两点都属两块的某一块(这里的切割点是mid点). 还须要考虑两点分属两块的情况. 这时对于选点则把范围缩小到了以mid为中心. ...
- Android---OpenGL ES之添加动作
本文译自:http://developer.android.com/training/graphics/opengl/motion.html 在屏幕上绘制对象是OpenGL的最基本功能,你可以使用其他 ...
- POJ2528 Mayor's posters 【线段树】+【成段更新】+【离散化】
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39795 Accepted: 11552 ...
- codeforces 577
codeforces 577A 题目链接:http://codeforces.com/problemset/problem/577/A 题目大意:给出一个n*n的表格,每个表格对应的值为横坐标*纵坐标 ...
- Lua学习笔记9:多文件
一 终端中运行多个文件:-l 增加在文件一中定义了一个变量,在还有一文件里输出这个变量.代码例如以下: --file1.lua num = 100 --file2.lua print(num) 终端输 ...
- uva-211-The Domino Effect
http://uva.onlinejudge.org/external/2/211.html http://uva.onlinejudge.org/external/2/211.pdf 题意:每一种骨 ...