一,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作为视图解析器。这通常是在struts.xml文件中添加一个`<result>`标签,并设置类型为`velocity`,如下所示: ```xml <result type="...
在Struts2中整合Velocity还需要配置Velocity相关的依赖,确保项目中包含Velocity Engine库,并在Struts2的配置中指定Velocity工具库: ```xml <constant name="struts.action.extension" value=".do"/> ...
在这个"struts2+spring+velocity扩展实例V1版本"中,我们可以看到这三个框架的集成与应用。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它的主要职责是处理用户的请求,并将其...
在"mongo集成spring struts2 json velocity"这个项目中,我们将看到如何将这些技术整合到一起,创建一个功能丰富的Web应用程序。 首先,MongoDB的集成意味着项目会利用其NoSQL特性和文档存储的优势。Spring Data ...
在"Velocity003"这个压缩包中,可能包含了一些关于如何在Struts2项目中集成和使用Velocity模板的示例代码或教程。例如,可能有Action类的实现,展示了如何设置和返回结果对象;还有Velocity模板文件,演示了如何在...
通过研究这个压缩包,开发者可以深入理解如何在Struts2中集成Velocity,以及如何利用Velocity的特性来创建动态、高效的Web应用。同时,这也是一种了解MVC架构如何在实践中运作的好方式。为了更好地利用这些资源,...
1. **配置集成**:在Struts2的配置文件(struts.xml)中,需要声明Velocity结果类型,以便Struts2知道如何处理 Velocity模板。通过添加`<result-type>`标签并指定`class`属性为`org.apache.struts2.views.velocity....
在 Struts2 框架中,Velocity 模板引擎可以与 Struts2 集成,实现了显示层与程序代码的分离。 Velocity 模板引擎的优点在于,它可以使得开发人员快速开发显示层,同时也可以与 Struts2 框架集成,以实现显示层与...
Struts2和Velocity是Java Web开发中的两个重要框架,它们在构建动态Web应用程序时发挥着关键作用。Struts2是一个强大的MVC(Model-View-Controller)框架,而Velocity则是一个模板引擎,专注于视图层的呈现。在这个...
3. **整合配置**:在整合Struts2和Velocity时,我们需要在Struts2的配置文件(通常为struts.xml)中配置VelocityResult。这将告诉Struts2如何处理Action的结果,并使用Velocity引擎来渲染模板。 4. **Action与...
在"velocity+ssh2"的整合中,Spring负责管理所有组件,包括Velocity和Hibernate的配置以及业务层对象。Struts作为控制器,处理用户请求并调用Spring管理的业务服务,这些服务再通过Velocity模板来生成响应的页面。...
Struts2、Spring和Velocity是Java Web开发中的三个重要框架,它们共同构建了一个高效、灵活且可扩展的应用程序架构。让我们深入探讨这三个组件以及如何在项目中整合它们。 **Struts2** 是一个基于MVC(Model-View-...
Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化,以后直接调用即可,无需修改任何源代码,改压缩文件包括 1、工具类; 2、源码(含jar包); 3、mysql数据库可执行文件; 4、struts2集成...
在Java Web开发中,SSH(Spring、Struts2和Hibernate)是一个常见的开源框架组合,用于构建高效、可扩展的企业级应用程序。在这个特定的资源中,我们聚焦于Struts2框架所需的jar包。Struts2是一个强大的MVC(模型-...
在"Struts2+velocity jar"这个压缩包中,可能包含了Struts2和Velocity相关的库文件,如struts2-core.jar、velocity.jar等,这些jar文件是运行基于Struts2和Velocity的Java Web应用所必需的。使用这些库,开发者可以...
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 ...
"Maven搭建SSH项目"是一个基础的Java Web开发模板,通过Maven管理项目构建,结合Struts2处理请求,Spring管理依赖和事务,Hibernate进行数据操作。这样的组合可以快速构建出功能完备的应用,并易于维护和扩展。理解...
在整合Struts2和Velocity的过程中,关键在于配置Struts2的Action类和Velocity模板,以及确保引入了必要的jar包。以下是一个简化的整合步骤和相关知识点: 1. **环境准备**: - 首先,你需要下载Struts2和Velocity...
在Struts2框架中集成Velocity,可以充分利用两者的优势。首先,开发者需要在Struts2的配置文件(struts.xml)中定义Action,指定使用Velocity作为视图解析器。然后,创建Velocity模板文件(通常以`.vm`为扩展名),...
7. **配置步骤**:集成SSH时,开发者需要在web.xml中配置Struts2的前端控制器,Spring的DispatcherServlet,以及相关的过滤器和监听器。同时,要在应用的上下文配置文件中声明Spring的Bean,Struts2的动作类,以及...