一,Velocity是什麽?
具体概念在百度中都能找到,不赘述。可以参见http://airport.iteye.com/blog/23634
简单点说,Velocity与JSP类似。就是一个模板技术,通过后台JAVA程序进行变量的计算和赋值,前端模板vm文件使用后台计算的变量排版表示。优点是
1,可以不使用JSP的Taglib,容易扩展
2,完全的界面design和后台分离。互不影响
3,与jsp相比,效率更高
二,Struts2与Velocity的集成方法
参考资料:https://struts.apache.org/docs/velocity.html
1,依赖Jar包导入
最新的Struts2中已经提供了集成Velocity时所需的依赖jar包,集成时需要导入以下Jar包(struts-2.3.20-all\struts-2.3.20\lib)。
・velocity-tools-1.3.jar
・velocity-1.6.4.jar
・commons-collections-3.1.jar
・commons-lang-2.4.jar
2,配置文件Check
检查struts-default.xml文件中Velocity Result是否已配置。
struts-default.xml路径:struts2-core-2.3.20.jar/struts-default.xml
3,在Struts2中使用Velocity
1的依赖和2的配置都OK的话,可以直接使用Velocity模板。配置如下,在Result中声明type为velocity并跳转到vm模板
<action name="testLogin" class="gravehistory.test.struts.LoginAction"> <result name="fail">/test/login.jsp</result> <result name="input">/test/login.jsp</result> <result name="success" type="velocity">/test/test-success.vm</result> </action>test-success.vm
<html> <head> <title>Hello</title> </head> <body> Hello, $userName </body>以上userName在LoginAction做为属性被定义
<pre name="code" class="java">public class LoginAction extends ActionSupport { private String userName; private String passWord; public void validate() { //省略 } public String execute() { //useraname的赋值等 } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } }
</html>
4,显示效果:
提交后
三,Velocity中自定义Macro的使用和配置
如果Velocity提供的标签不能满足需求,可以基于现有的标签创建新的macro对其进行扩展。macro是可嵌套的。所谓的macro,可以理解为vm中的一个函数,传入参数,获取处理后的html片段,支持html标签。
1,创建macro文件,定义新的macro
创建文件WEB-INF\vm\macro.vm
#macro(test $msg) <h1>*****$!{msg}*****<h1> #end
2,配置velocity,使其可以使用自定义的macro
velocity的配置文件为velocity.properties,路径为WEB-INF\velocity.properties
配置内容
velocimacro.library = WEB-INF/vm/macro.vm
3,vm中使用方法
修改后的test-success.vm<html> <head> <title>Hello</title> </head> <body> Hello, #test($userName) </body> </html>
4,显示效果
四,其它问题说明
按照之前的的配置和部署在Local环境下,可正常运行。在远程服务器上发现有如下问题:
问题1:提示/test/test-success.vm 找不到
解决方法1:将/test/test-success.vm放在resources目录下,编译至classpath
问题2:/test/test-success.vm可以访问,但是自定义macro不起作用
解决方法:之前放在/WEB-INFO下的velocity.properties未被找到,所以将velocity.properties也放在resources目录下
问题3:velocity.properties可以被访问,但使用自定macro时,velocity.properties中配置的macro库找不到
解决方法:将macro库放到resources目录下,并修改velocity.properties
修改后的目录结构如下
相关推荐
一个很简单容易上手的struts2与velocity集成 实例;很方便初学者进入struts2与velocity集成 学习
一个简单的struts2 整合 velocity 模板的例子
struts2+spring+velocity简单的扩展实例,下载下来就能运行。后续将整合各项技术。敬请期待。
Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化,以后直接调用即可,无需修改任何源代码,改压缩文件包括 1、工具类; 2、源码(含jar包); 3、mysql数据库可执行文件; 4、struts2集成...
Struts2+velocity 整合时所用的jar包 资源目录如下 commons-collections-3.1 commons-digester-2.0 commons-fileupload-1.2.2 commons-lang-2.5 freemarker-2.3.16 ognl-3.0.1 oro-2.0.8 struts2-core-2.2.3.1 ...
java 采用struts2+spring+velocity模板项目。
Struts2 整合 velocity最简单工程 最少的jar包 SSH Velocity
Struts2与Velocity模板
commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.13.jar struts2-core-2.1.6.jar xwork-2.1.2.jar
Velocity 将Java 代码从web页面中分离出来,使站点在长时间运行后仍然具有很好的可维护性,并提供了一个除JSP和PHP之外的可行的被选方案。 Velocity可用来从模板产生web 页面,SQL, PostScript以及其他输出。他也可...
struts2与velocity整合的项目例子 写了各种使用方法
这段时间学习mongo数据库,花点时间搭了个框架,资源是myeclipse10整个工程包,有问题随便问。
Struts2+velocity jar
一份Struts2中Velocity模板的程序。
velocity+ssh2+分页+权限 数据库自动生成,test测试 sessionFactory
velocity+struts2实例,适合开发和整合使用,你可以发现很多时候都是可以复用或者优化的方法,只要你用心去修改、
struts2+velocity jar包
文档详细描述了Velocity整合struts2步骤,以及velocity的语法规范
使用了Struts结构和Velocity模板技术的BLOG
Velocity入门教程,语法,Velocity布局,Spring框架集成Velocity