百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何实现Velocity 与Struts2框架相互集成的应用

haoteby 2024-11-08 12:34 13 浏览

软件项目实训及课程设计指导——如何在Web应用系统中实现Velocity 与Struts2框架相互集成的应用实例

1、Struts 2应用框架提供对 Velocity 和 FreeMarker 模板引擎的支持

在Struts 2应用框架中不仅继续保留有对Velocity模板引擎的支持,而且也提供对 另一个广泛应用的FreeMarker 模板引擎的支持。

在Struts 2应用框架中集成Velocity模板引擎的实现过程比在Struts应用框架中集成Velocity模板引擎要简单的多,因为Struts 2应用框架系统内带有对Velocity模板引擎的技术支持。

2、集成Struts 2应用框架和Velocity模板引擎时所需要的系统配置

(1)添加有关的系统JAR包文件

实现Struts 2应用框架集成Velocity模板引擎时所需要的系统JAR包,除了Struts2应用框架本身所需要的系统包文件以外,还需要与Velocity模板引擎有关的系统包文件——主要为velocity-1.6.1-dep.jar、velocity-tools-1.4.jar和velocity-tools-view-1.4.jar,请参考如下示图所示。

(2)在web.xml部署描述文件中配置定义VelocityViewServlet组件

在Web项目的部署描述符web.xml部署描述文件中除了要配置定义出Struts 2应用框架本身的org.apache.struts2.dispatcher.FilterDispatcher组件类外,也还需要配置定义出org.apache.velocity.tools.view.servlet.VelocityViewServlet组件类,请参考如下代码示例中对VelocityViewServlet类的配置示例。

<servlet>
    <servlet-name>velocity</servlet-name>
    <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
    <init-param>
        <param-name>org.apache.velocity.properties</param-name>
        <param-value>/WEB-INF/velocity.properties</param-value>
    </init-param>
</servlet>
<servlet-mapping>
      <servlet-name>velocity</servlet-name>
      <url-pattern>*.vm</url-pattern>
</servlet-mapping>

3、在Web项目中添加/WEB-INF/velocity.properties文件

(1)在Web项目的WEB-INF目录中新建一个文件名称为velocity.properties的文件,参看如下示图所示

(2)velocity.properties文件中的内容如下

file.resource.loader.path = /
runtime.log = /velocity.log
default.contentType=text/html
input.encoding=GBK
output.encoding=GBK

4、在Web项目中添加一个请求页面velocityUserLogin.jsp

(1)在MyEclipse开发工具中新增加一个velocityUserLogin.jsp页面文件,参看如下示图所示

(2)velocityUserLogin.jsp页面文件中的代码示例如下

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>My JSP 'fmtUserLogin.jsp' starting page</title>
</head><body>
      <form action="/Struts2Web/velocityUserInfoAction.action" method="post" >
          您的名称:<input type="text" name="userName" /> <br />
          您的密码:<input type="password" name="userPassWord" /> <br />
          <input type="submit" value="提交" name="submitButton" onclick="this.value='正在提交请求,请稍候'"/>
          <input type="reset" value="取消" />
      </form>
</body></html>

(3)velocityUserLogin.jsp页面静态预览效果参看如下示例图所示

5、在Web项目中再设计一个处理的Action类VelocityUserInfoAction

(1)VelocityUserInfoAction所在的程序包名称为com.px1987.struts2.action,并继承于com.opensymphony.xwork2.ActionSupport的基类,参看如下示例图所示的创建过程。

(2)VelocityUserInfoAction程序类的代码示例如下

package com.px1987.struts2.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.px1987.struts2.actionform.UserInfoActionForm;
public class VelocityUserInfoAction extends ActionSupport {
    private String userName=null;
    private String userPassWord=null;
    private UserInfoActionForm oneUserInfo=null;
    public VelocityUserInfoAction() {
    }
    /** 在该方法中进行用户登陆的功能实现 */
    public String execute(){
        String resultMessage=null;
        boolean returnResult=
        getUserName().equals("yang") &&getUserPassWord().equals("1234");
        if(returnResult){
          	resultMessage =getUserName()+"您登录成功!";
        }
        else{
        		resultMessage =getUserName()+"您的身份信息无效!";
        }
        HttpServletRequest request=ServletActionContext.getRequest();
        request.setAttribute("showResultInfo", resultMessage);
        return this.SUCCESS;
    }
    public String getUserName() {
    		return userName;
    }
    public void setUserName(String userName) {
   		 this.userName = userName;
    }
    public String getUserPassWord() {
   		 return userPassWord;
    }
    public void setUserPassWord(String userPassWord) {
    		this.userPassWord = userPassWord;
    }
}

6、在Web项目中的系统配置文件struts.xml文件中配置出该Action类

(1)最终配置的代码示例

<action name ="velocityUserInfoAction"
class ="com.px1987.struts2.action.VelocityUserInfoAction">
    <result name="success" type="velocity">/userManage/showInfoTemplate.vm</result>
    <result name="input">/userManage/velocityUserLogin.jsp</result>
</action>

由于Struts2应用框架使用Velocity作为其默认的模板技术,因此Struts2应用框架对Velocity模板技术的支持是非常良好的。为了在Struts2应用框架中使用Velocity模板技术,只需要在struts.xml文件中进行简单配置。

(2)将Action类的配置定义中的<result>标签内的type属性设置为velovity

由于在Struts 2 应用框架中是把各种类型的结果视图——如 JSP、Velocity、FreeMarker 等都封装成 ResultType 的子类。也就是说对于每一种类型的视图,在J2EE Struts 2应用框架中都有与之对应的 ResultType 的实现类,而本示例中的Velocity 视图对应的类是 org.apache.struts2.dispatcher.VelocityResult。

Struts 2 应用框架中的Action类的配置定义中的<result>标签内的type属性默认值是"dispatcher"(也就是对请求的转发Forward方式)。开发人员可以根据自己的应用需要指定不同的类型,如redirect、stream等。

上面的代码示例中的配置代码示例是将<result>标签内的type属性设置为velocity,也就是将<result>标签内的type属性设置为velocity的Action类的定义示例,注意其中黑体标识的语句。

7、在Web项目中设计Velocity的模板页面showInfoTemplate.vm

(1)在Web项目中新增加模板页面showInfoTemplate.vm文件,创建过程参看如下示例图所示

(2)模板页面showInfoTemplate.vm文件的代码示例如下,注意其中黑体标识的语句

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <head> <title>用户登录成功信息显示页面</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head><body>
			<h2>采用标准的方式获得参数值: $showResultInfo</h2 > <br>
</body></html>

由于Velocity模板引擎系统采用简单而强大的模板语言VTL实现对Web页面的渲染,因此能保证在Dreamwaver之类的Web页面可视化编辑器中都能够正常显示(参看如下示例图所示)。

另外,模板文件可以是任意的文件扩展名,采用*.vm、*.html或者*.xml都是可以的(本示例采用*.vm文件扩展名),这样就能直接在Web浏览器中看到Web页面的预览的效果。

8、部署并测试本示例Web项目

(1)部署本示例的Web项目相关程序到Web服务器中,部署后的结果参看如下示例图所示

(2)在Web浏览器中启动待测试的Web页面

在Web浏览器的URL地址栏中输入如下的URL地址信息http://127.0.0.1:8080/Struts2Web/userManage/velocityUserLogin.jsp,然后启动待测试的Web页面,参看如下示图所示。

如何实现Velocity模板引擎与Struts 框架相互集成

如何在J2EE平台开发基于Velocity模板的Web应用

如何在Web应用系统表示层开发中应用Velocity模板技术

应用XML+XSLT技术分离Web应用表示层数据和样式的实例

如何应用CSS+Div分离Web表示层数据处理逻辑和展现逻辑

相关推荐

5个珍藏多年的资源网站,免费又实用,建议收藏

今天给大家分享5个珍藏多年的资源网站,每个都是免费的,而且非常的实用,建议收藏。1、wallhaven一个国外知名的壁纸网站,拥有海量的8k、4k的超清图片壁纸,该网站的图片是由各地的创作者提供下载,...

设计网站推荐 | 国内外设计类素材网站

网站分享|十个不得不推荐的设计类素材网站!一些压箱底的常用的设计类素材分享!一定要打开这些网站试一试哦!...

阿里巴巴旗下菜鸟裹裹换新LOGO?长高了

LOGO大师整理编辑(ID:logods)...

10个做PPT必备的素材网站,越用越上瘾,每个都是宝藏

Pexelshttps://www.pexels.com/zh-cn/...

阿里旗下的四款免费小工具 好用并且能大大提升工作效率

好的工具能大大的提升你的工作效率,今天给大家分享的是阿里旗下的四款经典免费小工具,主要是用来设计,能方便,且高效的提高你的工作效率,觉得有用就收藏了吧。第一个:阿里巴巴图标库阿里巴巴图标库有将近80多...

UI设计入门干货!八大软件+技能+素材网站

随着互联网行业的发展,UI设计师越来越多的被提及,UI设计师大火,需求岗位越来越多,也有越来越多的人转行投身UI设计师。UI设计是什么?一般所说的UI设计多指UI视觉设计,主要负责APP、Web、H5...

干货!宝藏PPT素材——海量图标免费使用

我是星辰四个月的假期收集了一些PPT素材,筹备了这个公众号今天终于和大家见面了此公众号不定时更新各种素材干活和PPT模板记得关注我哦~后台发送“PPT”领取免费PPT模板总是很难找到合适PPT素材?费...

写了100多篇原创文章,我常用的在线工具网站推荐给大家

摘要不知不觉写博客已经一年多了,累计写了100多篇原创文章,今天给大家分享下我经常使用的在线工具网站,希望对大家有所帮助!MarkdownNice支持自定义样式的在线Markdown编辑器,编辑完成...

设计者必备神器:必须收藏的在线软件推荐

本内容来源于@什么值得买SMZDM.COM|首席生活家保密对于新电脑或重新刷系统的电脑,安装一堆软件是很费时间的,而软件多了会对系统运行速度有影响,特别是机械硬盘,响应时间与软件数量成正比的。而用了...

干货 | 设计师必备网站,大神作品、图片素材一网打尽

经常会听到这样的一句话:设计师每日正式开始工作的第一件事,就是打开3个及以上的设计/素材网站。网站中的优秀作品不仅可以帮助设计师提升自己,还能激发创作的灵感,所以今天,我们为大家整理了一些国内外优秀的...

推荐11个超好用的在线作图网站

现在做图好像已经不是设计师的专利不管是新媒体人、文案,还是随便一个人不会随时随地做几张漂亮图不能分分钟出点海报、封面图、邀请函什么的还怎么昂首挺胸在办公室里混不会PS没关系,不会做图可不行所以今天老贼...

做设计还只知道花瓣包图网?这100+个免费商用素材网站送给你

作为设计师你常用的网站是哪些呢?花瓣?站酷?千库?千图?包图?这些网站确实是大家最常用的网站,各种风格的元素、模板、源文件,用起来可以说是得心应手了~但是一旦出现了这个场景,你就也跟着崩溃了........

5个好看的图标网站,直接搜索下载

今天和大家分享5个图标网站,里面收录大量丰富的图标,在这里找到好图标不是什么难事。Iconsdbwww.iconsdb.com...

8个高清无版权的图片资源网站,质量高又免费,够你用一辈子

很多时候我们找素材总是要花费很多时间,今天就给大家分享8个,高清无版权的图片资源网站,质量高又免费,够你用一辈子。01*Logosc...

淘宝PPT设计师不会告诉你的4个网站!帮你剩下不少钱

之前的文章中,给各位推荐过图片素材网站,像:500px,unsplash等,也给各位推荐过图标网站,像阿里巴巴图标库。这些网站都很好用。但是,我最近发现,有一类素材网站,在做PPT时也会经常用到,...