Velocity学习笔记2

架构搭建系统(二)Struts2+Velocity(带Velocity Tools2.0) 架构搭建全过程 我们在struts2.3基础架构上增加Velocity作为页面视图工具,struts2.3基础架构的搭建请查看 《架构搭建系统(一)Struts2基础架构搭建全过程》 velocity增加导入包后的项目lib清单 阅读详情
条件语句(#if, #elseif, #else , #end)  
        当一个web页面被生成时如果使用了Velocity的#if 指令,那么当条件成立的时,执行相应的代码。例如:  
1 #if ( $foo )
2   <strong>Velocity!</strong>
3 #end

上例中的条件语句将在满足以下两种条件之一时成立:  
  • $foo是一个boolean型的变量,且它的值为true
  •  $foo变量的值不为null
这里需要注意一点, Velocity context仅仅能够包含对象,所以当我们说“boolean”时实际上代表的时一个Boolean对象。即便某个方法返回的是一个boolean值,Velocity也会利用内省机制将它转换为一个Boolean的相同值。  
        #elseif和#else元素可以同#if一同使用。例如:  
1 #if( $foo < 10 )
2   <strong> Go North </strong>
3 #elseif( $foo == 10 )
4   <strong> Go East </strong>
5 #elseif( $foo == 6 )
6   <strong> Go South </strong>
7 #else
8   <strong> Go West </strong>
9 #end

注意,这里的Velocity的数字是作为Integer来比较的, 其他类型的对象将使得条件为false,但是与java不同的是Velocity使用“==”来比较两个值,而且velocity要求等号两边的值类型相同。

    关系、逻辑运算符 

        Velocity中使用双等号(==) 判断两个变量的关系。例如:  
1 #set ( $foo = “deoxyribonucleic acid” )
2 #set ( $bar = “ribonucleic acid” )
3 #if ( $foo == $foo )
4   In this case it’s clear they aren’t equivalent.So…
5 #else
6   They are not equivalent and this will be the output.
7 #end

Velocity有AND、OR和NOT逻辑运算符。例子:  
1 ## logical AND
2 #if( $foo && $bar )
3   <strong> This AND that </strong>
4 #end

1 ## logical OR
2 #if ( $foo || $bar )
3   <strong>This OR That </strong>
4 #end

1 ##logical NOT
2 #if ( !$foo )
3   <strong> NOT that </strong>
4 #end

    循环(#foreach)   
        例子:  
1 <ul>
2   #foreach ( $product in $allProducts )
3     <li> $product </li>
4   #end
5 </ul>

每次循环都从$allProducts中取出一个值赋给$product变量。   $allProducts可以是一个Vector、Set或者Array。分配给$product的值是一个java对象,并且可以通过变量被引用。 如果$product是一个java的Product类,并且这个产品的名字可以通过调用他的getName()方法得到。   现在我们假设$allProducts是一个Hashtable,如果你希望得到它的key应该像下面这样:  
1 <ul>
2     #foreach ( $key in $allProducts.keySet() )
3         <li>Key: $key -> Value: $allProducts.get($key) </li>
4     #end
5 </ul>

          Velocity还特别提供了得到循环次数的方法   :  
1 <table>
2     #foreach ( $customer in $customerList )
3         <tr><td>$velocityCount</td><td>$customer.Name</td></tr>
4     #end
5 </table>

$velocityCount变量的名字是Velocity内置的变量。你也可以通过修改velocity.properties文件来改变它。默认情况下,计数从“1”开始,但是你可以在velocity.properties设置它是从“1”还是从“0”开始。下面的设置将velocityCount的名字改为loopCount, 循环计数从0开始:  
1 # Default name of loop counter
2 # variable reference
3 directive.foreach.counter.name = velocityCount
4  
5 # Default starting value of the loop
6 # counter variable reference
7 directive.foreach.counter.initial.value = 1


    #include指令  

        #include指令允许模板设计者引入本地文件,  被引入文件的内容将不会通过模板引擎被render。为了安全的原因,被引入的本地文件只能在TEMPLATE_ROOT目录下。

        #include指令的用法很简单:

1 #inclued ("one.txt")

如果您需要引入多个文件,可以用逗号分隔就行:  
1 #include ("one.gif", "two.txt", "three.htm")

在括号内可以是文件名,可以使用变量的:  
1 #inclue ("greetings.txt", $seasonalstock )


    #parse指令  

        #parse 指令允许模板设计者一个包含VTL的本地模板文件, Velocity将解析其中的VTL并进行渲染。用法

        #parse指令用法:

1 #parse("me.vm")

和#include一样,#parse指向的模板都必须包含在TEMPLATE_ROOT目录下,  但#parse只能指定单个对象。

        #parse是可以递归调用的,例如在foo.vmz中有如下内容: 

1 Count down.
2 #set ( $count = 8 )
3 #parse ( “parsefoo.vm” )
4 All done with dofoo.vm!

那么在parsefoo.vm模板中,你可以包含如下VTL:  
1 $count
2 #set ( $count = $count – 1 )
3 #if ( $count > 0 )
4   #parse( “parsefoo.vm” )
5 #else
6   All done with parsefoo.vm!
7 #end

渲染后的结果为:  
  Count down.  
  8  
  7  
  6  
  5  
  4  
  3  
  2  
  1  
  0  
  All done with parsefoo.vm!
  All done with dofoo.vm!

         你可以通过修改velocity.properties文件的parse_direcive.maxdepth属性值来控制嵌套#parse的层数,默认值是10。

    #stop指令

        #stop指令允许模板设计者停止执行模板引擎并返回。#stop对调试很有帮助。  
        #stop用法  
1 #stop

    Velocity的 宏(#macro)  
#macro指令用于定义Velocity的宏。 宏可以定义一段可重用的VTL template。例如:  
1 #macro ( d )
2  <tr><td></td></tr>
3  #end

 上面的例子中定义了一个Velocity的宏, 然后你可以这样来使用它:  
1 #d()

当你的template被调用时,Velocity将用<tr><td></td></tr>替换为#d()。  

        每个Velocity的宏可以拥有任意数量的参数。虽然定义时可以随意设置参数数量,但是调用这个Velocimacro时必须指定正确的参数。下面是一个拥有两个参数的宏,其中一个参数是color,另一个参数是array:

01 #macro ( tablerows $color $somelist )
02   #foreach ( $something in $somelist )
03     <tr><td bgcolor=$color>$something</td</tr>
04 #end 
05   
06 #set ( $greatlakes = [ “Superior”, “Michigan”, “Huron”, “Erie”, “Ontario” ] )
07 #set ( $color = “blue” )
08 <table>
09     #tablerows( $color $greatlakes )
10 </table>

渲染后:  
  <table>  
    <tr><td bgcolor=” blue”> Superior </td></tr>  
    <tr><td bgcolor=” blue”> Michigan </td></tr>  
    <tr><td bgcolor=” blue”> Huron </td></tr>  
    <tr><td bgcolor=” blue”> Erie </td></tr>  
    <tr><td bgcolor=” blue”> Ontario </td></tr>  
  </table>  

        Velocity的宏可以在Velocity模板内实现行内定义(inline)。 这就意味着同一个web site内的其他Velocity模板不可以获得该宏的定义。

        定义一个可以被所有模板共享的Velocimacro显然是有很多好处的:它减少了在一大堆模板中重复定义的数量、节省了工作时间、减少了出错的几率、保证了单点修改。

        实际上,上面定义的#tablerows( $color $list ) 宏已被定义在一个Velocity宏模板库(在velocity.properties中定义)里,所以这个macro可以在任何规范的模板中被直接调用。  

        Velocity的宏可以使用以下任何元素作为参数:

  • 任何以$开头的reference
  • 字符串字面值(String literal)
  • 数字字面值(Number literal)
  • 整数范围(IntegerRange):[1….3] , [$foo….$bar]
  • 数组列表(Array List):[“a”,”b”,”c”]
  • 布尔字面值(Boolean Literal):true、false
        当将一个reference作为参数传递给Velocity macro时,请注意reference作为参数时是以名字的形式传递的。这就意味着参数的值在每次Velocity macro内执行时才会被产生(相当于某些个特性使得你可以将一个方法调用作为参数传递给Velocimacro,而每次Velocimacro执行时都是通过这个方法调用产生不同的值来执行的。例如:  
1 #macro ( callme $a )
2   $a $a $a
3 #end
4 #callme( $foo.bar() )

执行的结果是:reference $foo的bar()方法被执行了三次。   如果你不需要这样的特性, 可以通过以下方法:  
1 #set ( $myval = $foo.bar() )
2 #callme ( $myval )

转自: http://my.oschina.net/aiguozhe/blog/39556
提升Velocity开发效率:Velocity Tools 2.0全面解析 本文还有配套的精品资源,点击获取 简介:Velocity Tools 2.0为Apache Velocity提供了一个扩展工具集,它优化和增强了Velocity模板引擎的功能,使得开发过程更加高效和简洁。该工具集包括视图辅助方法、国际化支持、直接访问Java对象字段、防止XSS攻击的安全性增强、数据验证集成、缓存功能以及SEO友好的URL重写等,旨在帮助开发者降低代码维护成... 阅读详情

相关推荐

Windows 11安装 SQLServer 2008 R2 失败问题处理

Windows 11安装SQL Server 2008 R2失败解决方案 由于Windows 11移除了对PowerShell 2.0的支持,导致SQL Server 2008 R2安装失败。经过多次尝试,最终通过**方案六(修改注册表模拟PowerShell 2.0环境)**成功安装。其他可行方案包括: 使用SP3集成版安装包 通过命令行跳过检查(/SUPPRESSPOWERShellCHECK参数) 创建特殊配置文件 替代方案建议: 使用Docker容器运行 在虚拟机中安装 升级到新版SQL Serve

oDengWei的博客 7161

Velocity——#foreach指令 $velocityCount

Velocity(7)——#foreach指令 首先是#foreach的简单示例: #foreach( $elem in$allElems)     $elem #end 上面这个例子中,$allElems可以是一个Vector,一个HashTable,一个数组。 在Velocity中,有一个变量$velocityCount用作循环计数,初始值是1。这个变量的名字和初始值是在veloc

lululove19870526的专栏 5万+

MAX96724解串器拨码配置实战:从COAX/GMSL2模式到IIC地址设定

本文详细解析了MAX96724解串器的拨码配置方法,涵盖电源管理模式、I2C地址设定及COAX/GMSL2视频传输模式。通过实战案例和故障排查技巧,帮助工程师快速掌握xcDeserializer4.0版本的配置要点,避免常见错误,提升车载摄像头和工业视觉系统的调试效率。

weixin_29243279的博客 576

Velocity的简单使用

velocity 简介 Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。它作为一款成熟的基于java的模板引擎,能够帮我们实现页面静态化,同时它将Java代码与网页分开,使网站在其生命周期内更加可维护,并为Java Server Pages(JSP)或PHP提供了可行的替代方案。 基本语法 # Velocity关键字都是使用#开头的,如#set、#if、#else、#e

罗罗的1024 2万+

硅谷刷屏的ClawdBot,让Mac mini卖爆了!创始人爆料:一人开发、100% AI 写代码

这两天,个人 AI 助手 ClawdBot 席卷硅谷,国内外社交平台上全是关于它的讨论。 在试用后,网友们纷纷给出了很高的评价。“它是迄今为止最伟大的 AI 应用,相当于你 24 小时全天候专属 AI 员工。”Creator Buddy 创始人兼 CEO Alex Finn 盛赞道,“这就是他们 (Anthropic) 希望 Claude Cowork 呈现的样子。”

技术引领业务创新 1584

保姆级教程:用ROS2 Humble和激光雷达,5分钟搞定机器人避障(附Python代码)

本文提供了一份详细的ROS2 Humble激光雷达避障实战指南,帮助开发者快速实现机器人避障功能。通过环境配置、硬件连接和Python代码实现,5分钟内即可让机器人自主避开障碍物。文章还涵盖了参数调优、常见问题排查及进阶优化技巧,适合机器人开发初学者和进阶用户。

weixin_42528902的博客 342

使用velocity :$velocityCount和Tool的使用

模板语言大家都熟悉,$var,#method(),#marco,#foreach,#if #elseif #end,#parse,#set都是常用的命令了。只要知晓这几个用法,也就可以算是脸熟了。 结合我自己使用Velocity的应用,我觉得还有一些几个经验很值得和大家分享: $velocityCount的应用 Tool的应用 layout的应用 1、

5011

步进电机

步进电机

happygrilclh的博客 2140

Velocity文档(2)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34306676的博客 159

LoRa双端通信稳定性核心:同步字配置与LLCC68工程实践

LoRa是一种基于扩频调制的远距离低功耗无线通信技术,其物理层鲁棒性依赖于发射端与接收端在频率、带宽、扩频因子及同步字等关键参数上的严格一致。同步字作为LoRa帧结构中位于前导码之后的2字节标识字段,承担着物理层帧过滤与网络隔离的核心作用,直接影响通信成功率与抗干扰能力。在实际嵌入式开发中,尤其采用LLCC68等专用射频芯片时,同步字配置错误或双端不一致是导致‘能发不能收’‘间歇性丢包’等典型问题的首要原因。本文面向STM32等Cortex-M平台开发者,结合硬件一致性约束、驱动移植方法论与寄存器级调试手段

weixin_36019375的博客 130

小论文/大论文必备 | RT-DETR目标检测、数据集增强 | 引入多种数据集增强方法,支持图像和标签同步扩充增强,助力小论文和大论文实验涨点策略,平均提升模型mAP约1-2个百分点

RT-DETR目标检测数据增强策略研究 ,本文针对RT-DETR目标检测模型提出9种数据增强方法,包括几何变换(水平/垂直翻转、中心裁剪)、光照调整(亮度、对比度)和噪声添加(高斯/椒盐噪声)等。所有增强操作均保持图像与标签同步变换,确保训练数据的准确性。实验表明,该策略可提升模型mAP 1-2个百分点,对小目标检测效果尤为显著。文中提供了完整的Python实现代码,支持批量处理图像和标签文件,并详细说明了各增强方法的功能特点。该方法通过提升数据多样性,有效增强了模型在复杂场景下的鲁棒性和泛化能力。

Ai缝合怪、助力小伙伴高效发论文 460

Velocity 模板引擎中#foreach 读取下标 $velocityCount 失败问题

#foreach ($config in $configs) $foreach.index //下标 $foreach.count //数组长度 $foreach.first $foreach.last $foreach.hasNext //是否是最后一个 #end

星宇的博客 3086

【同等学力】2025-数学✨

本文主要涵盖了谓词逻辑、集合论、图论和排列组合等多个数学领域的题目。在谓词逻辑部分,要求用全称量词和存在量词表达“没有两个人的指纹完全相同”。集合论部分涉及集合运算的证明,如证明(A-B)-C=(A-C)-(B-C)。图论部分包括计算给定10个点的联通图的边与面数。排列组合部分则要求计算从8个人中选6个并分为三组的不同方法。此外,还涉及偏序、长链、反链、二项式定理等相关内容,参考了多个优快云博客中的解题思路。

super_mochi1 676

vue2+velocity动画学习笔记(2):velocity知识

vue2+velocity学些笔记

arrowhan的博客 1510

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Velocity学习笔记2——Velocity能够做什么

            一个泥土商店的例子:            假设你是一个页面设计人员,为一个专门卖泥土的网上商店工作。我们把这个商店取名叫“网上泥土店”。这个店的业务是兴旺的。不同的顾客会购买不同的种类和数量的泥土。他们使用用户名和密码登录你的网站,这允许他们浏览他们自己的订单或者购买更多的泥土。 现在,有Terracotta土出售,而且这种泥土很受欢迎。而你的少数用户则会有规律的购买

afrag的专栏 2498

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

vue2+velocity动画学习笔记(1):引入velocity

vue2 + velocity 学习

arrowhan的博客 746

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Velocity学习笔记(2) - 搭建最简单的学习环境

昨天还不了解velocity,稍微抱怨了下,嘿 经过一番探索之后,发现其实velocity还是很简单,很好入门的哈. 搭建最简单的学习环境 1.jar包是少不了的 Commons-Collections.jar Commons-Common.jar Commons-Lang.jar velocity-1.6.3.jar velocity-tools-1.4.j...

canky 150

struts2+velocity

配了N久的velocity+struts2终于配置完毕。网络上那些参考有些让人产生疑惑。特写下此文,作为下次参考。1.web.xml 置于WEB-INF下需加入velocity    org.apache.velocity.tools.view.servlet.VelocityViewServletvelocity*.vm2.toolbox.xml

毁容也帅 1676

Velocity 学习笔记

Velocity 学习笔记变量注释单行注释多行注释文档注释数组遍历分支ifif else不解析参考资料 变量 以$开头接:字母数字下划线 alphabetic (a .. z, A .. Z) numeric (0 .. 9) underscore ("_") #set ($a = "变量a") #set ($b = "这是$a") ## 双引号解析变量 $b 这是变量a #set ($c...

灵台方寸山斜月三星洞 733

java velocity详解_[velocity] velocity详解

(1)为什么要使用模版语言?在服务器端可以使用Velocity处理模板和生成的动态内容(HTML、XML等)。这和JSP技术的目标非常接近。但是,JSP模型可以毫无阻碍地访问底层的ServletAPI和Java编程语言。它基本上是一种在很大程度上开放的访问模型。而作为一种完全自包含的模板引擎和脚本解释器,Velocity拥有完全封闭的模型。任何针对系统和/或Java编程语言的访问都必须明确地启...

weixin_32816821的博客 4879

velocity 手册 2

3.3.     条件3.4.     If / ElseIf / Else  Velocity中的#if 指令允许在页面生成时,在IF条件为真的情况下包含文本。例如: #if( $foo )   Velocity!#end 变量 $foo 先求值,以决定是否为真。在这两种情况下为真: (i) $foo是一

翔的窝窝 1312

Velocity学习笔记

VTL变量的语法描述如下: $[ ! ][ { ] [a-z,A-Z][a-z,A-Z,0-9,-_]*[ } ] Velocity不支持自动类型转换,请看下面两个对比 #set($foo="9") #set($foo=$foo + 1) $foo #set($foo=9) #set($foo=$foo + 1) $foo 只有后面这个会输出期望的结果 10  VTL

xuqiyu的专栏 986

struts2 的 velocity整合

struts2 的 velocity整合 struts2 的 velocity整合 博客分类:web层velocityStrutsServletApacheWeb感觉现在的JAVA框架越来越多,纷繁复杂。想彻底研究一种框架,了解下其中的一些通用的东西,于是选择...

115

struts2 支持velocity的模板布局功能

struts2 是支持 velocity 的,所以不需要什么大规模更改.大多就是测试的时候按提示添加缺少的 class.这里让它支持 velocity 的布局功能     首先在项目中新建个类,路径如下.这个类改写了 struts2 里的 velocity 类   package struts2.velocity; import java.io.OutputStreamWriter; i

Rogue-Creasy 1580
上一篇: Velocity学习笔记1
下一篇: Velocity学习笔记3
hil2000
博客等级 码龄17年 369粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值