首頁>技術>

軟體專案實訓及課程設計指導——如何在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.logdefault.contentType=text/htmlinput.encoding=GBKoutput.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。

上面的程式碼示例中的配置程式碼示例是將<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頁面,參看如下示圖所示。

19
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 阿里P7大佬整理的8個Vue自定義指令,非常實用