`
黑暗浪子
  • 浏览: 507834 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2讲义27

阅读更多

6  Struts2JSP 视图技术

在之前的章节中,笔者的代码示例都是用 JSP 来实现的。其实 Struts2 不仅仅支持 JSP 这一种视图技术。作为 MVC 架构中 view 层技术, velocity FreeMarker 视图技术也是很优秀的,近年来很多 Web 系统项目的架构师和开发者都开始放弃使用 JSP 作为 view 层显示技术转向使用 velocity FreeMarker 。因此笔者觉得有必要介绍 Struts2 框架是如何支持这两种视图技术的。希望本章能让读者作为“敲门砖”,敲开这两种视图技术的学习“大门”。

6.1   velocity 视图技术使用介绍

velocity 翻译成中文就是“速度”的意思,它的缩写“ v ”就是物理学中代表速度的符号。由它的名字可以想象出它的设计者对它有什么期望吧。毕竟有时候使用 JSP 来实现 view 层对于开发者来说是件很麻烦又费时的事情。 velocity 就是为开发者节约大量 view 层开发时间而准备的视图技术。它使用模板文件来显示视图界面。除了它自身的书写格式外,模板文件中其他代码就是普通的 html 代码。因此它也是实现松耦合,让美工和开发人员各司其职进行 view 层开发。下面通过示例来介绍它在 Struts2 中的使用方式。

技术要点

本节代码说明 velocity Struts2 中使用方式。

velocity 基本语义和书写格式说明。

模板文件 vm 介绍

Struts2 中如何使用 velocity

演示代码

显示数据的 vm 模板文件代码:

<!---------------文件名: show.vm--------->
<html>
    <head>
    <title>Velocity使用范例</title>
    <meta http-equiv="content-type" content="text/html; charset=GB2312"/>
    </head>
     <body>
       <h3 align="left">
            Velocity使用范例
        </h3>
       <h1>装修材料信息列表</h1>
 <table border>
        <tr align="center">
          <td>材料名</td>
          <td>材料价格(单位:元)</td>
          <td>材料库存量(单位:个)</td>
        </tr>
        #foreach($Material in $mList)
              <tr align="center">
                  <td>$Material.material</td>
                  <td>$Material.bid</td>
                  <td>$Material.mount</td>
             </tr>
       #end
       </table>
    </body>
</html>
 

Struts2 的使用 velocity Action 代码:

<!----------文件名:VelocityAction.java------->
public class VelocityAction extends ActionSupport{
         private List mList;
………
         public String execute() throws Exception{
                   mList = new ArrayList();
                   for(int i=0;i<4;i++){
                            Material m = new Material();
                            m.setMaterial("材料"+(i+1));
                            m.setMount(10*(i+1));
                            m.setBid(1.0+(i+1));
                            mList.add(m);                    
                   }
               return SUCCESS;             
         }
}
 

配置文件对 Action 的配置内容:

<!--------------文件名:struts.xml------------->
………
<package name="C06.1" extends="struts-default">
                   <action name="velocity"
                            class="action.VelocityAction">
                            <result name="success" type="velocity">/velocity/show.vm</result>
                   </action>
</package>
 

对支持中文字符的字符编码集设置:

<!---------------文件名:struts.properties------->
#支持本地化的资源文件名定义
struts.i18n.encoding=gb2312
 

示例效果显示如图 6.1

 

6.1  velocity 显示效果图

代码解释

1 )本节示例是将一些装修材料用 list 形式显示在页面上。如之前笔者讲述的实例完全可以由 JSP 来完成。而该示例是使用 velocity 技术来实现。读者也可以将其理解为一种和 JavaScript 相同的脚本语言。它的语义和语法中有以下几个注意点。

# ”标识:该标识用来表明 velocity 中的控制语句。比如“ #if ”、“ #foreach ”等,都是用来控制流程转向的。

$ ”标识:该标识来表示对象或变量。比如示例中的“ $Material ”。如果这些对象还有自己的属性,则可以在其后面再加“ . , 如示例中的“ $Material .material ”。

{} ”标识:该标识用来为某对象或变量赋具体的值。比如“ {frank}

“!”标识:假设某变量值为 null 或者还没被定义。则在该变量前加上“!”,这样在页面上调用该变量之处一律显示为空白即“ ”。

# ”标识: velocity 语言的注释标识。

2 velocity 模板文件后缀名都是“ vm ”结尾。该类型文件中除了可以书写 velocity 自己的语言代码之外,也可以使用 HTMl 语言的标签。在本示例中查看 show.vm 文件就可以知道它和 JSP 文件还是很相像的。而且 Struts2 的标签也可以在 vm 文件中使用, 只需要在原有标签前加“ #s ”就可以了,参数之间使用 “” 分隔。如果读者需要在 vm 文件中引入其他文件,这些被引入文件是 JSP 或者 vm 类型的话,将会显示文件中的定义的各种动态数据。如果是其他类型的文件被引入的话,只是显示这些文件的文本即静态引入。一般是使用“ #inclue (“文件名”)”格式进行 引入。如果需要引入多个文件则在“()”中以“,”相隔。还有个引入文件的书写代码格式是“ #parse ”,这个只能引入 vm 类型文件,而且只能引入一个。不过这样引入也有一个好处,那就是被引入 vm 文件中不仅可以使用它自己定义的变量也可以使用引入它的 vm 文件中的变量。这样引入文件和被引入文件关系有点像 JAVA 中父类和子类关系。还有如果想让界面中显示 velocity 中这些标识,而不被 velocity 解析,那可以在它们前面加上“ \ ”。比如想显示“ $ ”,则可以写成“ \$ ”,这样在“ $ ”后面的内容, velocity 不会将其解析成 velocity 的变量而只是普通文本。

另外需要注意的时候, velocity 只会按照 gettXXX() 解析变量,例如 Material.material 实际上找到的 Material.getMaterial() 方法,读者可以试着在 Action 写一个变量而不使用 getXXX() 方法,看看会不会在 vm 中取到值,答案是变量照样会被输出。

3 )在 Struts2 中使用 velocity 技术,首先要在项目中导入 velocity jar 包,具体 jar 包名请读者参考项目示例。在该示例中 Action 无需过多说明。值得说的是 struts.xml 文件,比如在示例代码中笔者用黑体注明了 result 的返回类型必须是“ velocity ”,这样才可以调用 vm 模板文件。然后就可以像使用 JSP 一样使用 vm 文件显示 Action 的定义的材料 list 数据。

注意:由于 velocity 缺省显示中文字符用的字符编码集合是“ ISO-88591 ”。如果开发中使用的项目字符编码集合不是“ ISO-88591 ”,则需要在 struts.properties 中定义“ struts.i18n.encoding ”为开发中使用的字符编码集。比如在本示例中笔者就定义为“ gb2312 ”。

  • 大小: 37.7 KB
分享到:
评论
7 楼 whaosoft 2009-10-19  
写的很好,这一系列的文章,一直再看,挺不错
6 楼 gxgxyjy062 2009-10-19  
楼主,辛苦了,我会关注你的每期讲义的,谢谢你在这里的指导!
5 楼 黑暗浪子 2009-10-19  
fishice 写道
楼主好强大,呵呵,太感谢了,希望可以到时把讲义生成pdf。


等我全部OK再说。这是我和我朋友合著的书中struts2部分。我们一共写了三个部分,spring和hiberniate是我朋友写的。struts2是我写的。
4 楼 fishice 2009-10-19  
楼主好强大,呵呵,太感谢了,希望可以到时把讲义生成pdf。
3 楼 SpringJava 2009-10-16  
恩,楼主辛苦了!我正在阅读你的文章,解释很清楚,写的非常的详细!!
2 楼 黑暗浪子 2009-10-16  
SpringJava 写道
楼主可以把所有的讲义做成一个PDF文档吗?我觉得这样很方便。因为里面提供正广和功能。

连载完我会弄的。目前还有几章。javaeye一天不让发很多,否则我一天搞定。
1 楼 SpringJava 2009-10-16  
楼主可以把所有的讲义做成一个PDF文档吗?我觉得这样很方便。因为里面提供正广和功能。

相关推荐

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    ### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的发展历程**: - Struts最初版本发布于2000年,是Java Web开发领域的一个重要里程碑。 - 随着时间的发展和技术的进步,Struts逐渐暴露...

    struts2讲义

    ### Struts2框架入门知识点详解 #### 一、Struts2框架概述 ##### 1.1 Struts2简介 Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,用于简化Java Web应用程序的开发过程。与传统的Java Web...

    struts2讲义 DOC版

    struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义

    struts2讲义-详解

    本讲义将详细介绍Struts2的核心概念、工作原理以及如何在实际项目中应用。 一、Struts2简介 Struts2是Apache软件基金会的开源项目,它是Struts1的升级版,旨在解决Struts1在可扩展性和灵活性上的不足。Struts2提供...

    struts2讲义,讲解struts2的框架

    在本讲义中,我们将深入探讨Struts2的基本概念、依赖的库、启动配置以及配置文件。 首先,开发Struts2应用需要依赖一些核心的JAR文件。这些文件包括: 1. `struts2-core-2.x.x.jar`:这是Struts2框架的核心库,...

    原创struts2讲义2.pdf

    ### Struts2框架详解 #### 一、Struts2框架介绍与概述 ##### 1.1 Struts2框架概述 Struts2是一个基于MVC(Model-View-Controller)模式的开源Java Web应用框架,它提供了强大的功能来帮助开发者构建灵活、可扩展...

    《Struts2讲义》吴峻申【电子书】

    第2章 Web基础技术简介第3章 Struts2核心技术第4章 另一Struts2核心技术:拦截器第5章 Struts2标签库第6章 Struts2非JSP视图技术第7章 Struts2类型转换技术第8章 Struts2输入校验第9章 Struts2国际化第10章 Struts2...

    Struts2讲义(Word文档格式)

    本讲义详细介绍了Struts2框架的各个方面,帮助开发者从基础到进阶全面掌握其用法。 1. **Struts2概述** Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其局限性,提供了更优秀的行动控制器...

    struts2讲义.doc

    ### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的演变**:从Struts1到Struts2,框架经历了从MVC(Model-View-Controller)架构的经典实践到更为灵活、强大的迭代升级。 - **Struts2的...

    struts2 教程 讲义.(pdf)

    本教程讲义深入浅出地介绍了Struts2的核心概念和技术,旨在帮助开发者快速掌握这个框架的使用。 在Struts2中,主要知识点包括: 1. **MVC设计模式**:MVC模式是软件工程中的经典设计模式,它将应用程序分为模型...

    struts2讲义,解析

    这个“struts2讲义”显然提供了一个全面的教程,旨在帮助学习者理解和掌握Struts2的核心概念和技术。以下是Struts2的一些关键知识点: 1. **MVC模式**:Struts2基于Model-View-Controller(MVC)设计模式,它将应用...

    Struts2讲义1

    Struts2讲义1 Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web开发框架,由Apache软件基金会维护。它继承了Struts1的优点,并结合了WebWork框架的功能,提供了更强大的控制层解决方案。Struts2的...

    西安野马计算机培训学校STRUTS2讲义

    西安野马计算机培训学校的STRUTS2讲义,可能涵盖了这一框架的基础知识和高级特性,帮助学员理解和掌握Struts2的核心概念。 首先,Struts2的基础部分可能包括以下几个方面: 1. **架构原理**:讲解Struts2的MVC设计...

    黑暗浪子写的struts2讲义.pdf

    Struts2是Apache软件基金会...总的来说,黑暗浪子的这本Struts2讲义涵盖了Struts2的各个方面,无论对于初学者还是有经验的开发者,都是一个宝贵的参考资料,能帮助读者深入理解和熟练运用Struts2框架,提高开发效率。

    struts2讲义_吴峻申

    Struts2讲义 作者:吴峻申 目录 第1章 Struts过时了吗? 10 1.1 Struts历史发展过程 10 1.2 Struts2的“简历” 13 1.2.1 标签库介绍 13 1.2.2 拦截器应用目的 14 1.2.3 FilterDispatcher和Action概述 14 1.2.4 ...

Global site tag (gtag.js) - Google Analytics