ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一 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 也是可以获取的,但是实现无缝拼接的时候,需要区分 获取属性的时候,属性加在{}里面 变量可以使变量引用,字符串,数字,属性引用,方法引用,数组列表 ~~~ #set( $monkey = $bill ) ## variable reference #set( $monkey.Friend = "monica" ) ## string #set( $monkey.Blame = $whitehouse.Leak ) ## property reference #set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference #set( $monkey.Number = 123 ) ##number #set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList ~~~ vm中的属性不会识别为属性变量,而是识别为属性方法 ### 2 循环 ~~~ #foreach($l in $list) $l 可以是一个具体的字符串,也可能是一个对象,继续读取属性方法 ($l.attr) #end ~~~ 循环的长度 $!list.size()==0 另外 需要注意的是 $! 是判断对象是否存在的方法 如果存在 显示 如果不存在 不显示 为false ### 3 条件判断 ~~~ #if(condition) #elseif(condition) #else #end ~~~ 条件开始判断 只要一个开始 一个结束语法 而且是就近匹配 注意与循环的嵌套使用 ###4 注释 一般情况下 为了更好的理解你的页面语法 需要一定的注释语句 > 单行注释 ## > 多行注释 #* *# > 文档注释 #** **# ### 5 逻辑运算 && || ! 真或 以及假或的使用 ### 6 宏的使用 也就是vm语法的函数,定义函数 ~~~ #macro(宏的名称 $参数1 $参数2 …) 语句体(即函数体) #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: ~~~ <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath"> <value>WEB-INF/velocity/</value> </property> </bean> ~~~ > VelocityConfigurer负责在Spring中设置Velocity引擎。这里,我们通过属性resourceLoaderPath告诉Velocity到哪里寻找它的模板。我们建议将模板放到WEB-INF的某个子目录下面,这样可以保证这些模板不能被直接访问。也可以通过velocityProperties属性来设置其他Velocity的配置细节。例如下面的VelocityConfigurer配置: ~~~ <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath"> <value>WEB-INF/velocity/</value> </property> <property name="velocityProperties"> <props> <prop key="directive.foreach.counter.name">loopCounter</prop> <prop key="directive.foreach.counter.initial.value">0</prop> </props> </property> </bean> <bean id= "velocityConfigurer" class= "org.springframework.web.servlet.view.velocity.VelocityConfigurer" > <property name= "resourceLoaderPath"> <value> /WEB-INF/view/</value > </property> <property name= "velocityProperties"> <props> <prop key= "input.encoding">UTF-8</prop > <prop key= "output.encoding">UTF-8</prop > </props> </property> </bean> ~~~