velocity使用配置

一、简介

   Velocity 是一个基于java 的模板引擎(template engine). 它可以让视图的设计者在web 页面中引用java 代码中定义的数据对象和命令。从而使Web designers 和java 开发者依照MVC 思想(Model-View-Controller )开发系统,这意味着Web designers 只须将精力注用于良好表现力的视图外观设计,而Java程序员则只要关心着如何写出高效简洁的java 对象以实现业务逻辑—–Velocity 会将他们组装到一起。 
相比传统的jsp、PHP 等脚本语言,Velocity 彻底的将避免了在视图设计中出现的java 代码, 从而保证了web site 的长期可维护性。

二、常用的Velocity模板语言(VTL)

   1、VTL 声明( statement)

所有的VTL statement 都是以#开头,且包含一个指示符,当客户访问你的页面时, the Velocity Templating Engine 将搜索页面中的所有# 符号,如果确定这是一个VTL 声明时就按一定规则处理动态内容, 符号#仅仅只是表明这可能是一个VTL 声明。 

   2、VTL注释

单行注释是以## 开头的一行文字.如要写下多行注释,将它们放入#* 和*#间。 

   3、Velocity references
     VTL 中有三种references:变量引用(variables),属性引用(properties)和命令引用(methods). 做为一个使用VTL 的设计者, 你和你的java 软件工程师必须就模板中引用的特定名了(就是$后的名字)达成一致的协议!这样,模板和java 代码才可按照你们的意图去结合以输出正确的内容。
     所有的引用在模板中都表现为一个字符串. 假设一个引用变量$foo 的值事实上是一个int, Velocity engine 在处理时将调用它的.toString()去解析这个字符串所代表的对象(int)。

注意:

    模板中引用的必须是通过java Bean 中的getter/setter 实现的,而直接的java 对象的数据域是不能直接引用的,如$foo.Name 会解析到class Foo’s getName() 的实例方法,但不会解析到Foos 类的public Name 这个实例变量。

三、velocity模板在spring中的简单配置

   1.velocity引擎。

     首先需要配置的是velocity引擎。可以通过以下方式在spring配置文件中声明一个VelocityConfigurer   Bean。VelocityConfigurer负责在spring中设置Velocity引擎。这里,通过属性resourceLoaderPath告诉Velocity到哪里寻找它的模板。建议将模板放到WEB-INF下的某个子目录下,可以保证这些模板不能被直接访问。
VelocityConfigurer负责在spring中设置Velocity引擎。这里,通过属性resourceLoaderPath告诉Velocity到哪里寻找它的模板。建议将模板放到WEB-INF下的某个子目录下,可以保证这些模板不能被直接访问。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><!-- velocity引擎 -->
    <bean id="velocityConfigurer"
        class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <property name="resourceLoaderPath" value="/WEB-INF/views/" />
        <property name="velocityProperties">
            <props>
                <prop key="input.encoding">UTF-8</prop>
                <prop key="output.encoding">UTF-8</prop>
               
        </property>
    </bean></span>
    在配置属性时有两种方式

一是通过下面这种属性的方式

<property name="velocityProperties">
    <props>   
        <prop key="">  </prop>
        <prop key="">  </prop>
    </props>
</property>
二是通过配置文件的方式(velocity.properties)

<span style="font-family:KaiTi_GB2312;font-size:18px;"><property name="configLocation">
    <value>/WET-INF/config/velocity.properties</value>
</property></span>

   2.解析velocity视图

<span style="font-family:KaiTi_GB2312;font-size:18px;"><!-- velocity解析器 -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="contentType" value="text/html;charset=UTF-8" />
        <property name="viewClass" value="com.bjmd.base.web.velocity.XmVelocityView"/>
        <property name="prefix" value="" />
        <property name="suffix" value=".html" />
        <property name="requestContextAttribute" value="rc"/>
        <property name="dateToolAttribute" value="dateTool" />
        <property name="numberToolAttribute" value="numberTool" />
    </bean></span>

在这里我们仅仅设置了suffix属性为.vm扩展名。由于模版文件的路径已经通过VelocityConfigurer的resourceLoaderPath属性配置好了。

   3、交互

后台java代码这样写

@RequestMapping("/list")
	public String sayHello(Model model,HttpServletRequest request){
		model.addAttribute("hello", "hello,world");
		return "index";
	}
视图的逻辑名为index。当解析这个视图时,index加上后缀.vm构成一个模板名index.html。VelocityViewResolver会在WEB-INF/vilocity路径下寻找这个模板。 
然后再index.html下通过如下就可以显示数据:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<h1>${hello}</h1>
</body>
</html>
以上只是一个简单的配置过程。


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值