一 vm 是什么 ?

vm是一种页面的格式,全称是velocity model ,velocity 模板的意思,针对我们目前的项目可以看到处理的格式是这样的,请求地址是htm,指令是action,参数是&拼接的,而返回地址的页面是*.vm,经过velocityviewservlet 转换就可以吧模板文件进行merge变成可读的页面文件,通过response返回给界面。
而servlet拓展除了各种请求的模板方式,包括.do,.action ,而对应的页面的形式有jsp,php,asp,所以需要注意的是静态的html文件是可以直接打开的,而动态的必须是在服务器环境下才可以打开,要通过引擎处理优化输出html格式的才可以。

二 vm怎么用 ?

vm是基于java的模板引擎,可以吧java定义返回的对象,字符串,属性直接以相应的模式解析出来,加载在标签中。所以相应的方法只要按照属性获取,列表循环获取即可。

三 常用的vm的语法有什么 ?

而针对复杂的逻辑,一般的语法是解决不了所有问题的,那么vm为我们准备了哪些常用语法呢?

1 设置变量 所有的变量默认按照字符串的形式获取

#set ($count='是的')
vm是弱类型的变量,但是要注意一下几点,
vm中的字符串将会被重新解析 特别是$命名的
vm变量的命名是一个大小写的字母开始的,所以货币符号的使用是没有问题的
正确的使用变量的方法是${var} 而$var 也是可以获取的,但是实现无缝拼接的时候,需要区分
获取属性的时候,属性加在{}里面
变量可以使变量引用,字符串,数字,属性引用,方法引用,数组列表

  1. #set( $monkey = $bill ) ## variable reference
  2. #set( $monkey.Friend = "monica" ) ## string
  3. #set( $monkey.Blame = $whitehouse.Leak ) ## property reference
  4. #set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference
  5. #set( $monkey.Number = 123 ) ##number
  6. #set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList

vm中的属性不会识别为属性变量,而是识别为属性方法

2 循环

  1. #foreach($l in $list)
  2. $l 可以是一个具体的字符串,也可能是一个对象,继续读取属性方法 $l.attr
  3. #end

循环的长度 $!list.size()==0
另外 需要注意的是 $! 是判断对象是否存在的方法 如果存在 显示 如果不存在 不显示 为false

3 条件判断

  1. #if(condition)
  2. #elseif(condition)
  3. #else
  4. #end

条件开始判断 只要一个开始 一个结束语法 而且是就近匹配 注意与循环的嵌套使用

4 注释 一般情况下 为了更好的理解你的页面语法 需要一定的注释语句

单行注释 ## 多行注释 # # 文档注释 # #

5 逻辑运算

&& || !
真或 以及假或的使用

6 宏的使用

也就是vm语法的函数,定义函数

  1. #macro(宏的名称 $参数1 $参数2 …)
  2. 语句体(即函数体)
  3. #end

使用函数,注意的是 参数之间空格隔开

#宏的名称($参数1 $参数2 …)

7 引入文件

#include #parse 分别用于引入文件 ,一个适用于多个 ,一个适用于单个

8 内置对象

$request、$response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。

9 一些零碎的知识点 ,不在描述

例如 #stop 停止模板的渲染 ,\ 用于转义 等等,语法嵌套使用

四 vm 的页面模板如何快速应用?

  1. eclipse设置vm文档关联步骤 :
    打开Eclipse —-》window——》preference ——-》Content type——-》Text——》Html ——-》Add ———》
  2. 项目配置
    首先需要配置的是Velocity引擎自己。要做到这点,可以通过以下方式在Spring配置文件中声明一个VelocityConfigurer Bean:
  1. <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
  2. <property name="resourceLoaderPath">
  3. <value>WEB-INF/velocity/</value>
  4. </property>
  5. </bean>

VelocityConfigurer负责在Spring中设置Velocity引擎。这里,我们通过属性resourceLoaderPath告诉Velocity到哪里寻找它的模板。我们建议将模板放到WEB-INF的某个子目录下面,这样可以保证这些模板不能被直接访问。也可以通过velocityProperties属性来设置其他Velocity的配置细节。例如下面的VelocityConfigurer配置:

  1. <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
  2. <property name="resourceLoaderPath">
  3. <value>WEB-INF/velocity/</value>
  4. </property>
  5. <property name="velocityProperties">
  6. <props>
  7. <prop key="directive.foreach.counter.name">loopCounter</prop>
  8. <prop key="directive.foreach.counter.initial.value">0</prop>
  9. </props>
  10. </property>
  11. </bean>
  12. <bean id= "velocityConfigurer"
  13. class= "org.springframework.web.servlet.view.velocity.VelocityConfigurer" >
  14. <property name= "resourceLoaderPath">
  15. <value> /WEB-INF/view/</value >
  16. </property>
  17. <property name= "velocityProperties">
  18. <props>
  19. <prop key= "input.encoding">UTF-8</prop >
  20. <prop key= "output.encoding">UTF-8</prop >
  21. </props>
  22. </property>
  23. </bean>