Java Web程序设计教程 教学课件 PPT 作者 范立锋 林果园 第7章 Struts 2中应用模板语言

上传人:E**** 文档编号:89401697 上传时间:2019-05-24 格式:PPT 页数:60 大小:579KB
返回 下载 相关 举报
Java Web程序设计教程 教学课件 PPT 作者 范立锋 林果园 第7章  Struts 2中应用模板语言_第1页
第1页 / 共60页
Java Web程序设计教程 教学课件 PPT 作者 范立锋 林果园 第7章  Struts 2中应用模板语言_第2页
第2页 / 共60页
Java Web程序设计教程 教学课件 PPT 作者 范立锋 林果园 第7章  Struts 2中应用模板语言_第3页
第3页 / 共60页
Java Web程序设计教程 教学课件 PPT 作者 范立锋 林果园 第7章  Struts 2中应用模板语言_第4页
第4页 / 共60页
Java Web程序设计教程 教学课件 PPT 作者 范立锋 林果园 第7章  Struts 2中应用模板语言_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《Java Web程序设计教程 教学课件 PPT 作者 范立锋 林果园 第7章 Struts 2中应用模板语言》由会员分享,可在线阅读,更多相关《Java Web程序设计教程 教学课件 PPT 作者 范立锋 林果园 第7章 Struts 2中应用模板语言(60页珍藏版)》请在金锄头文库上搜索。

1、第7章 Struts 2中应用模板语言,7.1 Web模板简介,7.2 Velocity模板,7.3 FreeMarker模板,7.4 Velocity与FreeMarker的比较,7.1 Web模板简介,很多情况下,大量的开发成本都花费在后期维护上,因此开发人员希望应用程序能够实现易维护性。模板技术提供了一种简洁的方式来生成动态的页面,并将业务逻辑和视图进行分离,从而使程序开发人员只专注于编写底层代码,页面设计人员只专注于视图方面的设计。这种方式不仅提高了开发效率,还使得应用程序在长时间运行后依然具有很好的维护性。 那么,模板引擎是如何工作的呢?它的工作原理:,返回,7.2 Velocity

2、模板,Velocity模板语言简称VTL,是一个基于Java的模板引擎。在一个应用程序中,可以预先使用Velocity模板语言设计好模板,开发人员将页面显示的数据放入上下文中,Velocity引擎将模板和上下文结合起来,然后就可生成动态的网页。使用Velocity具有以下几个优点:,Velocity是Apache软件组织提供的一项开源项目,可以免费 下载。 Velocity简单,掌握Velocity是一件容易的事情。 Velocity模版中不包含任何Java代码,它将HTML技术和复 杂的业务逻辑划分出来,能简化Web开发。 Velocity不仅可以生成Web页面,还可以从模板中生成SQL、

3、PostScript和XML,功能强大。 Velocity支持模版的国际化编码转换。,返回,7.2 Velocity模板,7.2.1 Velocity下载与安装,7.2.3 Velocity的注释,7.2.5 Velocity的指令,7.2.2 初识Velocity,7.2.4 Velocity的引用,7.2.6 Velocity的其它特性,7.2.7 Struts 2对Velocity的支持,Velocity下载与安装,Velocity的下载网站是“http:/velocity.apache.org/”,在此网站上下载完Velocity以后将其解压缩,会得到两个jar文件:velocity-

4、1.5.jar和velocity-dep-1.5.jar,其中velocity-1.5.jar包含了Velocity的核心类,但是它没有Velocity必需的库文件,velocity-dep-1.5.jar不仅包含了构建完整的Velocity库文件,还有Velocity所有依赖的库文件。将这两个jar文件放入应用程序的classpath下,就完成了Velocity的安装。,返回,初识Velocity(1),下面通过一个简单实例来初步认识Velocity。,(1)在ecplise中新建一个Java工程,在工程的根目录下建立Velocity模板文件,Velocity的模板文件以.vm结尾,在这里建

5、立的模板文件的名称为hello.vm,具体代码如下:,hello,$name,其中,$name被称为Velocity的变量引用,它的值由Java程序来提供。,(2)建立给Velocity变量引用提供值的Java类,类名为“HelloVelocity.java”主要代码如下:,初识Velocity(2),public class HelloVelocity public static void main(String args) try Velocity.init(); /初始化Velocity引擎 catch (Exception e) e.printStackTrace(); Velocit

6、yContext context = new VelocityContext(); /初始化Velocity上下文 context.put(“name“, “Velocity“); /把数据填入上下文 StringWriter writer = new StringWriter(); try /把模板和上下文结合起来 Velocity.mergeTemplate(“hello.vm“, “ISO-8859-1“, context, writer); catch (Exception e) e.printStackTrace(); System.out.println(writer.toStri

7、ng(); /控制台上输出 ,运行类HelloVelocity,程 序的运行结果如图所示:,返回,Velocity的注释,在Velocity模板中包括以下两种注释:,单行注释:以#开头。 多行注释:以#*开始,以*#结束。,例如:,#这是单行注释 #* 这是多行注释 这是多行注释 *#,返回,Velocity的引用(1),Velocity引用的作用是为了在模板中显示动态的内容。在Velocity中,引用分为变量引用、属性引用和方法引用。,1变量引用,变量引用由$和VTL标识符组成,VTL标识符必须以字母开头,其余字符可以是字母(az 、AZ)、数字(09)、连字符(-)或下划线(_)。例如:,

8、$username $user-name $user_name $number1,变量引用有两种赋值方式:一种是在Java程序中赋值:,context.put(“name“, “Velocity“);,另一种是使用set指令赋值:,#set($username=“sunyang“) hello,$username,Velocity的引用(2),2属性引用,属性引用是由$、点号(.)和VTL标识符组成的,例如:,$country.china $user.age,属性引用也有两种赋值方式:一种是使用Hashtable对象赋值;另一种是使用方法赋值。有如下模板文件:,bookname: $book.

9、bookname bookauthor: $book.bookauthor,使用Hashtable对象在 程序中赋值:,使用方法赋值 ,创建Book类,有对应属性的get、set方法:,Hashtable book=new Hashtable(); book.put(“bookname“,“JSP教材“); book.put(“bookauthor“, “sunyang“); context.put(“book“, book);,Book book=new Book(); book.setBookname(“JSP教程“); book.setBookauthor(“sunyang“); con

10、text.put(“book“, book);,Velocity的引用(3),3方法引用,方法引用由$、VTL标识符和方法体组成,下面是使用方法引用的例子:,$book.getBookid() $book.setBookname(“JSP教程“),$book.getBookid()这种形式和属性引用中的方法赋值是一样的,而“$book.setBookname(“JSP教程“)”这种形式则是给属性bookname赋值。,返回,Velocity的指令(1),在Velocity中,引用用来输出动态内容,指令则是用来控制页面的外观和内容。,1给引用赋值的set指令,set指令用于给变量引用或属性引用赋

11、值,语法格式如下:,#set(name=value),name参数:该参数必须是变量引用或属性引用 value参数:该参数可以是变量可以是变量引用、属性引用、 方法引用、字符串、数字、ArrayList或算术表达式。,参数说明:,例如:,#set( $monkey = $bill) #变量引用 #set( $monkey.Blame = $whitehouse.Leak ) #属性引用 #set($monkey.Plan = $spindoctor.weave($web) #方法引用 #set( $monkey.Friend = “monica“ ) #字符串 #set( $monkey.Sa

12、y = “Not“, $my, “fault“ ) #ArrayList #set( $number = $foo + 1 ) #算术表达式加法,Velocity的指令(2),当value值为字符串时,须用单引号或双引号包围起来。用单引号和双引号之间有所不同,用双引号的引用会替换成相应的值,而用单引号的引用则输出原代码。例如:,#set( $directoryRoot = “www“ ) #set( $domain= ““ ) #set( $mydomain1 = “$directoryRoot.$domain“ ) #set( $mydomain2 = $directoryRoot.$dom

13、ain) $mydomain1 $mydomain2,程序的输出结果如下图所示:,Velocity的指令(3),2进行条件控制的if/elseif/else指令,if/elseif/else指令类似于Java语言中的ifelseifelse指令,可进行条件控制,格式如下:,#if(condition) . #elseif(condition2) . #else . #end,例如:,#set($type=“sunyang“) #if($type=“sunyang“) 金牌会员 #elseif($type=“common“) 普通会员 #else 游客 #end,Velocity的指令(4),3

14、进行遍历循环的foreach指令,foreach指令可用于进行遍历循环,格式如下:,#foreach(Loop) . #end,foreach指令可进行循环的对象有Vector、Hashtale或Array,例如:,#foreach($book in $booklist) $book #end,Velocity的指令(5),4可包含文件的include指令,使用include指令可将一个本地文件导入到模板中指定的位置,可一次导入一个本地文件,也可一次导入多个本地文件,导入多个时文件之间用逗号分开,文件名可用引用变量代替。include指令的语法格式如下:,#include(“file“) #包

15、含一个文件 #include(“file1“,“file2“,“fileN“) #包含多个文件,例如:,#include(“main.html“) #include(“top.html“,$main,$footer),Velocity的指令(6),5可包含文件的parse指令,使用parse指令可导入一个包含VTL的本地文件,和使用include不同,使用parse指令导入的文件会被Velocity解析,而且它只能一次导入一个文件,该指令的语法格式如下:,#parse (“file“),例如:,#parse (“index.vm“) #parse ($main),说明:使用parse指令包含的

16、文件必须放在TEMPLATE_ROOT目录下。,Velocity的指令(7),6停止执行的stop指令,stop指令经常被使用在调试过程中,它可停止模板引擎的执行并返回,语法格式如下:,#stop,7定义宏的macro指令,宏是一段可重复使用的VTL片段,它使用macro指令定义,语法格式如下:,#macro (macroname param1 param2 . paramN) #end,macroname是定义的宏的名字,param1到paramN是宏的参数。使用macroname宏的语法格式如下:,# macroname(param1,param1 param2 . paramN),Velocity的指令(8),例如,定义宏:,#macro( tablerows

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号