## 一 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>
~~~
- 前端入门
- 前端入职须知
- 前端自我定位
- pc与手机页面差别
- 前端书单
- 前端种子计划
- 前端技术栈
- ps
- ps入门阶段
- html
- html入门
- html代码规范
- meta
- table
- iframe
- a标签详解
- image
- html代码审查工具
- h5专题
- h5入门
- h5新增属性
- canvas画布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入门必学
- css代码规范
- 项目字体规范
- css基本位置布局
- css常见样式命名规则
- css代码优化建议
- css常用样式名
- css选择器攻略
- css盒子模型的理解
- css属性继承与默认值
- css代码审查工具
- css中常见的知识盲区
- css3新特性浅谈
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技术
- 文本两端对齐
- css之浮动解决方案
- css优化建议
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固宽&变宽布局
- 宽高固定比例的盒模型
- 样式预处理语言
- less教程
- sass教程
- postcss教程
- js
- javascript入门
- js代码规范
- js基础拓展
- js代码审查工具
- js性能优化
- js基本语句
- 基本运算
- 基本语句语法
- js对象
- es6入门
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入门
- jq核心思想
- jq基本语法
- jq插件库汇总
- js常用技术
- break&continue区别
- js对日期转换
- js控制运动-move.js
- 原生js-cookie语法
- ajax请求后回调
- 表单数据序列化
- zepto
- zepto入门
- 百度touchjs
- js编程
- 插件库
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互组件
- layerjs
- java
- java入门
- java基本语句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入门
- git教程
- git入门
- git分支
- git-tag管理
- git注意事项
- git-torise入门
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容适配文档
- pc端兼容bug汇总
- ie兼容bug汇总
- 手机兼容bug汇总
- web安全
- jeecms
- web存储
- app/h5组件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域问题
- markdown教程
- 常用工具
- postman-api调试
- web常识
- 浏览器ua统计
- ui框架
- easyui
- bootstrap
- 入门推荐
- weui
- sui-pc
- sui-mobile
- layerUi