如何实现Velocity 与Struts2框架相互集成的应用
haoteby 2024-11-08 12:34 23 浏览
软件项目实训及课程设计指导——如何在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 框架相互集成
如何在Web应用系统表示层开发中应用Velocity模板技术
相关推荐
- JAVA零基础入门:JDK的概述及安装(jdk完整安装教程)
-
一.什么是jdkJDK(JavaDevelopmentToolKit)是Java开发工具包,JDK是整个JAVA的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一...
- 开源、强大的工作流引擎:camunda入门介绍
-
原创不易,请多多支持!对Java技术感兴趣的童鞋请关注我,后续技术分享更精彩。简介CamundaisaJava-basedframeworksupportingBPMNforwork...
- Centos8搭建Java环境(JDK1.8+Nginx+Tomcat9+Redis+Mysql)
-
一、开篇1.1目的每次换新的服务器,都要找资料配下环境,所以我写这篇文章,重新梳理了一下,方便了自己,希望也能给大家带来一些帮助。安装的软件有:JDK1.8+Nginx+Tomcat9+...
- 记录一次tomcat的升级过程(tomcat6升级tomcat8)
-
原因:ApacheTomcat资源管理错误漏洞(CVE-2021-42340)版本:ApacheTomcat/9.0.46,tomcat解决方法:升级tomcat9到最新版本9.0.581.官...
- Tomcat10安装与配置图文教程(tomcat安装及配置)
-
Tomcat10安装与配置图文教程1、百度搜索“tomcat下载”,进入官网下载https://tomcat.apache.org/index.html...
- VS2022配置x86/x64调用32位和64位汇编语言动态库环境
-
配置X86MASM汇编环境1.创建项目打开VS2022创建新项目,新建asm文件(注意要手动修改cpp文件后缀名为asm文件后缀名)。2.设置入口点选择菜单栏中的“调试”-“demo调试属性”-...
- ARM版Win10用户狂喜 微软全新补丁让应用不再不兼容
-
Windows10onARM仅支持模拟32位的X86应用程序,这意味着大多数的桌面应用是无法在这一平台上运行的,这在很大程度上限制该平台的发展。为了解决这一问题,微软在内部开发频道推出可用于AR...
- 分享收藏的 oracle 11.2.0.4各平台的下载地址
-
概述oracle11.2.0.4是目前生产环境用的比较多的版本,同时也是很稳定的一个版本。目前官网上已经找不到下载链接了,有粉丝在头条里要求分享一下下载地址。一、各平台下载地址...
- Android-x86现已基于5.1.1 Lollipop:支持UEFI和64位内核
-
采用Linux内核的Android-x86,旨在为PC带来最新的Android移动操作系统体验。而近日,该操作系统已经发布了Android-x865.1的首个候选发布(RC)版本。发行说明中提到:A...
- Linux Kernel源码阅读: x86-64 系统调用实现细节(二)
-
特别说明:该文章前两天发布过,但一直在审核中。看头条网友说字数太多可能一直处于审核中状态,我把该文章拆分成几个章节发布,如影响阅读体验还请见谅。五、系统调用编号...
- 树莓派4B安装win10后实测,CPU秒杀AMD Athlon64 3200+
-
在上一篇文章介绍了如何给树莓派4B安装win10系统,这篇就简单对系统进行测试,上一篇文章链接https://www.toutiao.com/i7015518822056886821/因为树莓派是a...
- 一键离线部署x86、arm64 RabbitMQ,花了2天去验证整理,直接拿去
-
最近有一个项目,客户是内网网络,只能离线部署,采用的麒麟ARM64服务器系统,不能远程部署,需要提前准备离线部署包让客户IT拷备上去再现场部署,部署时间就只有1天。自家系统采用的vue+springb...
- Linux软件包管理(linux系统软件包的安装方法,并简要说明其特点)
-
Linux系统如果需要安装软件怎么办?如何安装,大概有以下几种方式1.二级制软件包管理(RPM、YUM)...
- Tachyum要做全球最强64位处理器:性能比X86强,面积比ARM小
-
全球半导体芯片研发、生产最强的国家非美国莫属,如果有某家美国公司宣布要开发性能超强的芯片,大家不会意外,但要是一家斯洛伐克初创公司宣布要研发超级芯片呢?Tachyum公司就是这样一家公司,成立于201...
- Android L 64位模拟器终于来了:x86独享
-
GoogleI/O2014大会已经过去了很久,64位的AndroidL依然停留在纸面上,但现在至少可以让开发者们先行品尝品尝了:64位的AndroidL模拟器已经发布。这次公布的模拟器镜像是专...