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、付费专栏及课程。

余额充值