`

搭建SSH,从零开始(第N天)—在Struts2中集成Velocity

ssh 
阅读更多

一,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作为视图解析器。这通常是在struts.xml文件中添加一个`&lt;result&gt;`标签,并设置类型为`velocity`,如下所示: ```xml &lt;result type="...

    struts2整合velocity

    在Struts2中整合Velocity还需要配置Velocity相关的依赖,确保项目中包含Velocity Engine库,并在Struts2的配置中指定Velocity工具库: ```xml &lt;constant name="struts.action.extension" value=".do"/&gt; ...

    struts2+spring+velocity扩展实例V1版本

    在这个"struts2+spring+velocity扩展实例V1版本"中,我们可以看到这三个框架的集成与应用。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它的主要职责是处理用户的请求,并将其...

    mongo集成spring struts2 json velocity

    在"mongo集成spring struts2 json velocity"这个项目中,我们将看到如何将这些技术整合到一起,创建一个功能丰富的Web应用程序。 首先,MongoDB的集成意味着项目会利用其NoSQL特性和文档存储的优势。Spring Data ...

    Struts2&&Velocity

    在"Velocity003"这个压缩包中,可能包含了一些关于如何在Struts2项目中集成和使用Velocity模板的示例代码或教程。例如,可能有Action类的实现,展示了如何设置和返回结果对象;还有Velocity模板文件,演示了如何在...

    struts2 velocity

    通过研究这个压缩包,开发者可以深入理解如何在Struts2中集成Velocity,以及如何利用Velocity的特性来创建动态、高效的Web应用。同时,这也是一种了解MVC架构如何在实践中运作的好方式。为了更好地利用这些资源,...

    struts2Velocity.zip_velocity

    1. **配置集成**:在Struts2的配置文件(struts.xml)中,需要声明Velocity结果类型,以便Struts2知道如何处理 Velocity模板。通过添加`&lt;result-type&gt;`标签并指定`class`属性为`org.apache.struts2.views.velocity....

    Struts2与Velocity模板

    在 Struts2 框架中,Velocity 模板引擎可以与 Struts2 集成,实现了显示层与程序代码的分离。 Velocity 模板引擎的优点在于,它可以使得开发人员快速开发显示层,同时也可以与 Struts2 框架集成,以实现显示层与...

    velocity+struts2实例,适合开发和整合使用

    Struts2和Velocity是Java Web开发中的两个重要框架,它们在构建动态Web应用程序时发挥着关键作用。Struts2是一个强大的MVC(Model-View-Controller)框架,而Velocity则是一个模板引擎,专注于视图层的呈现。在这个...

    struts2+velocity

    3. **整合配置**:在整合Struts2和Velocity时,我们需要在Struts2的配置文件(通常为struts.xml)中配置VelocityResult。这将告诉Struts2如何处理Action的结果,并使用Velocity引擎来渲染模板。 4. **Action与...

    velocity+ssh2+分页+权限

    在"velocity+ssh2"的整合中,Spring负责管理所有组件,包括Velocity和Hibernate的配置以及业务层对象。Struts作为控制器,处理用户请求并调用Spring管理的业务服务,这些服务再通过Velocity模板来生成响应的页面。...

    Struts2+Spring+Velocity项目

    Struts2、Spring和Velocity是Java Web开发中的三个重要框架,它们共同构建了一个高效、灵活且可扩展的应用程序架构。让我们深入探讨这三个组件以及如何在项目中整合它们。 **Struts2** 是一个基于MVC(Model-View-...

    Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化

    Struts2集成FreeMarker和Velocity,写成了工具类,快速实现页面静态化,以后直接调用即可,无需修改任何源代码,改压缩文件包括 1、工具类; 2、源码(含jar包); 3、mysql数据库可执行文件; 4、struts2集成...

    SSH中Struts2所需基本jar包

    在Java Web开发中,SSH(Spring、Struts2和Hibernate)是一个常见的开源框架组合,用于构建高效、可扩展的企业级应用程序。在这个特定的资源中,我们聚焦于Struts2框架所需的jar包。Struts2是一个强大的MVC(模型-...

    Struts2+velocity jar

    在"Struts2+velocity jar"这个压缩包中,可能包含了Struts2和Velocity相关的库文件,如struts2-core.jar、velocity.jar等,这些jar文件是运行基于Struts2和Velocity的Java Web应用所必需的。使用这些库,开发者可以...

    Struts2+velocity 整合jar包

    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项目

    "Maven搭建SSH项目"是一个基础的Java Web开发模板,通过Maven管理项目构建,结合Struts2处理请求,Spring管理依赖和事务,Hibernate进行数据操作。这样的组合可以快速构建出功能完备的应用,并易于维护和扩展。理解...

    Struts2 整合 velocity最简单工程 最少的jar包

    在整合Struts2和Velocity的过程中,关键在于配置Struts2的Action类和Velocity模板,以及确保引入了必要的jar包。以下是一个简化的整合步骤和相关知识点: 1. **环境准备**: - 首先,你需要下载Struts2和Velocity...

    velocity+struts2 demo

    在Struts2框架中集成Velocity,可以充分利用两者的优势。首先,开发者需要在Struts2的配置文件(struts.xml)中定义Action,指定使用Velocity作为视图解析器。然后,创建Velocity模板文件(通常以`.vm`为扩展名),...

    ssh所需jar包struts2

    7. **配置步骤**:集成SSH时,开发者需要在web.xml中配置Struts2的前端控制器,Spring的DispatcherServlet,以及相关的过滤器和监听器。同时,要在应用的上下文配置文件中声明Spring的Bean,Struts2的动作类,以及...

Global site tag (gtag.js) - Google Analytics