Velocity的扩展

   之前一直找不到velocity的扩展接口,导致工作一直做不下去。今天看了一个下午+一个晚上的文档,终于找到了突破口(看来我是挺笨的)。就在VelocityTools这一块。
  在IBM实习时养成的很好的习惯--看源码--真是受用终身啊。通过不断的对比VelocityTools的文档,javadoc和源码,发现原来在那个toolbox.xml里大有文章。

  首先,要指定toolbox.xml的位置,在web.xml里

    <servlet>
        
<servlet-name>velocity</servlet-name>
        
<servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
        
<load-on-startup>10</load-on-startup>
        
<init-param>
            
<param-name>org.apache.velocity.toolbox</param-name>
            
<param-value>/WEB-INF/toolbox.xml</param-value>
        
</init-param>
    
</servlet>
    
<servlet-mapping>
        
<servlet-name>velocity</servlet-name>
        
<url-pattern>*.vm</url-pattern>
    
</servlet-mapping>

  这是toolbox.xml的一部份:

<toolbox>

  
<tool>
     
<key>math</key>
     
<scope>application</scope>
     
<class>org.apache.velocity.tools.generic.MathTool</class>
     
<request-path>/catalog/*</request-path>
  
</tool>

</toolbox>


  <key>里就是在VTL里写的$math,这样就算引入一个对象了。
  <scope>是生命周期,有关init()方法的调用。
  其它两个的作用从字面上和表达就可以猜出来了。

  对于扩展的类,与web容器相关的主要是一个public void init(java.lang.Object object)的方法,传入的参数是org.apache.velocity.tools.view.context.ViewContext接口,但需要手动转换。从这个接口,可以得到request, session, response, servletContext等对象,同时根据scope的不同在调用次数上也会有不同。application的只初始化一次,request每次请求都会重新初始化,session就是在session建立时初始化。
  看过这些以后,对那些VelocityStruts工具的原理就一目了然咯~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值